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。 你会用parentchildren的组合来做到这一点。 如果你放置的HTML不完全像这样,并且第二个DIV可能位于相对于链接的另一个位置,这种方法将是最好的:

var div = $(this).parent().children('.class2');

如果您希望“搜索”不限于直系孩子,则可以在上例中使用find而不是children

另外,如果可能的话,最好预先在标签名称前加上你的类选择器。 即,如果只有<div>标签将具有这些类,请将选择器设置为div.class1div.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

上一篇: Jquery $(this) Child Selector

下一篇: How to selected a div inside a selector?