gpt4 book ai didi

javascript - .child() 返回第二级项目

转载 作者:行者123 更新时间:2023-11-28 01:08:02 24 4
gpt4 key购买 nike

嗯,我认为 .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 的实例。如果已定义 test.tabs,则仅使用旧实例来保留它。

为了测试它,我创建了一个名为 testdrive 的函数,用于在单击 .tabs>.nav>li>a 时在控制台“data-name”属性中打印。

代码有效,但是,在控制台中,如果我单击第一级项目,我会收到“第二级选项卡”。child() 函数有问题吗?我的代码有问题吗?

感谢您的帮助。

最佳答案

问题是 self 的变量声明,因为您没有使用 var 来声明它是在全局上下文中创建的。所以

var self = this;

您还使用test.tabs键设置数据,但使用simple.tabs键读取数据

$(this).closest(".tabs").data("test.tabs").testdrive();

演示:Fiddle

此外,我认为您可以使用 self.$element.find("> .nav > li > a").click(function (e) {}); 注册点击处理程序

关于javascript - .child() 返回第二级项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com