【问题标题】:Trouble targeting siblings无法定位兄弟姐妹
【发布时间】:2011-07-19 19:55:43
【问题描述】:

您好,我有一个无序列表:

<ul class="prodDetails">
<li class="details1"><a href="">Link1</a></li>
<li class="details2"><a href="">Link2</a></li>
<li class="details3"><a href="">Link3</a></li>
</ul>

$("ul.prodDetails li.details1 a").addClass('prodDetailsOn').siblings().removeClass('prodDetailsOn');

我正在尝试将“prodDetailsOn”类添加到单击的 href,同时将其从所有其他 href 中删除。

我不知何故错过了目标。有什么想法吗?

谢谢

【问题讨论】:

    标签: jquery dom tree traversal


    【解决方案1】:

    您必须返回&lt;li&gt; 元素才能获取其他 LI。

    $("ul.prodDetails li.details1 a").addClass('prodDetailsOn').parent('li').siblings().removeClass('prodDetailsOn');
    

    【讨论】:

    • 我认为这是最好的答案,因为它可以保持本地范围更正,而其他范围则需要额外的查找。
    • 谢谢。这不是相当工作,但它帮助我想通了。我添加了 find("a") 并且它起作用了:$("ul.prodDetails li.details3 a").addClass('prodDetailsOn').parent('li').siblings().find("a")。 removeClass('prodDetailsOn');
    【解决方案2】:
    $("ul li a").click(function() {
    $("ul li a").removeClass("propDetailsOn");
    $(this).addClass('propDetailsOn');
    })
    

    【讨论】:

      【解决方案3】:
      $(function(){
      $("a").click(function(e){
      e.preventDefault();
          $("a").not($(this)).removeClass("prodDetailsOn");
          $(this).addClass("prodDetailsOn");
      });
      });
      

      这是小提琴http://jsfiddle.net/3nigma/uF7M5/1/

      【讨论】:

        【解决方案4】:

        这实际上是一种常见的模式。我所做的是首先移除切换开关,然后将其设置在触发事件的事物上。

        $('.prodDetails a').click(function () {
            $('.prodDetails a.prodDetailsOn').removeClass('prodDetailsOn');
            $(this).addClass('prodDetailsOn');
        });
        

        【讨论】:

          猜你喜欢
          • 2019-05-06
          • 2019-08-21
          • 1970-01-01
          • 2018-09-08
          • 1970-01-01
          • 2019-08-29
          • 1970-01-01
          • 1970-01-01
          • 2015-03-06
          相关资源
          最近更新 更多