.child()返回第二级项目
.child() returns 2nd level items
我认为。child()函数是我的问题…但我不确定这个。
在html
中<div class="tabs" data-name="1st level tabs">
<ul class="nav">
<li><a href="#">1st level link</a></li>
<li><a href="#">1st level link</a></li>
</ul>
<ul class="content">
<li>
1st TEXT
<div class="tabs" data-name="2st level tabs">
<ul class="nav">
<li><a href="#">2nd level link</a></li>
<li><a href="#">2nd level link</a></li>
</ul>
<ul class="content">
</ul>
</div>
</li>
<li>1st TEXT</li>
</ul>
</div>
类"tabs"的一个元素在另一个元素中…好吧;JS:
$(function($) {
var Tabs = function(element,options){
self = this;
self.$element = element;
self.testdrive = function (){
console.log(self.$element.attr("data-name"));
}
self.$element.children(".nav").children("li").children("a").click(function(e){
e.preventDefault();
//Returns EVER 2nd level
self.testdrive();
//Triggering directly a Tabs instance returns EVER 2nd level
$(this).closest(".tabs").data("test.tabs").testdrive();
});
}
//JQuery plugin
$.fn.tabs = function () {
return this.each(function () {
var $this = $(this);
var data = $this.data('test.tabs');
//Creating only one instance of Tabs
if(!data){
data = new Tabs($this);
$this.data('test.tabs',data);
}
});
}
//Adding tabs plugin to all ".tabs"
$(function() {
$('.tabs').each(function(){
$(this).tabs();
});
});
}( jQuery ));
当$(element). Tabs()被调用时,在数据属性test.tabs中创建一个函数Tabs的实例。如果测试。tab已定义,只使用旧实例来保存它。
为了测试它,我创建了一个名为testdrive的函数,当.tabs>时在控制台中打印"data-name"属性。导航>li>a已被点击代码工作,但是,在控制台我收到"2st级标签",如果我点击第一级项目。child()函数有问题吗?我的代码有问题吗?
问题是self
的变量声明,因为您没有使用var
来声明它是在全局上下文中创建的。所以
var self = this;
您也使用键test.tabs
设置数据,但使用键simple.tabs
读取数据
$(this).closest(".tabs").data("test.tabs").testdrive();
演示:小提琴
我也认为你可以使用self.$element.find(" > .nav > li > a").click(function (e) {});
来注册点击处理程序
相关文章:
- 正在将数据主题添加到所有项目
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何检查管道中未定义的项目
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 学生搜索项目jquery/javascript
- 如何获取不属于我项目的上一页的URL
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 我需要为我的朋友在这个项目上提供帮助
- 如何从 HTML 查询中删除项目
- 在Meteor项目中安装并包含npm模块后出错
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- 将单击事件添加到附加的项目中
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 在javascript中搜索项目列表的性能
- 如何将本地依赖项添加到npm项目中
- angularjs移除焦点上的活动类并添加到下一个项目
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 将webpack和babel与父项目目录中的文件一起使用
- 在slitify中制作二级项目符号的动画