Jquery $(this)子选择器
我在页面上使用这个:
jQuery('.class1 a').click( function() {
if ($(".class2").is(":hidden")) {
$(".class2").slideDown("slow");
} else {
$(".class2").slideUp();
}
});
随后页面中的结构将如下所示:
<div class="class1">
<a href="...">text</a>
<div class="class2">text</div>
</div>
这是工作正常,除非你有如multipour class1 / class2集:
<div class="class1">
<a href="...">text</a>
<div class="class2">text</div>
</div>
<div class="class1">
<a href="...">text</a>
<div class="class2">text</div>
</div>
<div class="class1">
<a href="...">text</a>
<div class="class2">text</div>
</div>
如何更改最初的jQuery代码,使其仅在当前被点击的class1下产生class2? 我试过了本页面推荐的变体:如何获取$(this)选择器的子元素? 但还没有得到它的工作
使用HTML的最佳方式可能是使用next
函数,如下所示:
var div = $(this).next('.class2');
由于点击处理程序正在发生到<a>
,您还可以遍历父级DIV,然后搜索第二个DIV。 你会用parent
和children
的组合来做到这一点。 如果你放置的HTML不完全像这样,并且第二个DIV可能位于相对于链接的另一个位置,这种方法将是最好的:
var div = $(this).parent().children('.class2');
如果您希望“搜索”不限于直系孩子,则可以在上例中使用find
而不是children
。
另外,如果可能的话,最好预先在标签名称前加上你的类选择器。 即,如果只有<div>
标签将具有这些类,请将选择器设置为div.class1
, div.class2
。
.slideToggle()更简单一些:
jQuery('.class1 a').click( function() {
$(this).next('.class2').slideToggle();
});
编辑:使它.next而不是.siblings
http://www.mredesign.com/demos/jquery-effects-1/
您还可以添加Cookie来记住您的位置......
http://c.hadcoleman.com/2008/09/jquery-slide-toggle-with-cookie/
在点击事件中,“this”是被点击的标签
jQuery('.class1 a').click( function() {
var divToSlide = $(this).parent().find(".class2");
if (divToSlide.is(":hidden")) {
divToSlide.slideDown("slow");
} else {
divToSlide.slideUp();
}
});
有多种方式可以使用div,尽管你也可以使用.siblings,.next等
链接地址: http://www.djcxy.com/p/26673.html