如何在JQuery中的一个元素类中选择具有活动(说)类的父元素?

时间:2010-05-10 18:34:36

标签: jquery jquery-selectors

我认为这个例子会说清楚。我的HTML是这样的:

 <li class='nav-active'><span class='maillink' id='spnInbox' >Inbox</span></li>
 <li><span class='maillink' id='spnSentMail'>Sent Mail</span></li>
 <li><span class='maillink' id='spnDraft'>Draft</span></li>
 <li><span class='maillink' id='spanTrash'>Trash</span></li>

当用户点击任何其他链接时说草稿然后我想从收件箱“li”清除nav-active并将该类分配给草稿“li”。我的问题是如何从.maillink点击事件获得nav-active li。我知道我可以编写每个函数并删除它,但我想知道是否有选择器来执行此操作。

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

使用siblings方法获取nav-active类的兄弟并清除该类。

接下来将此类分配给单击的元素。

这将转到父li,然后找到具有类nav-active的li兄弟,并从那里删除该类。接下来将该类应用于所单击的span.maillink元素的父级。

$(".maillink").click(function() {
    $(this).parent("li").siblings(".nav-active").removeClass("nav-active");
    $(this).parent("li").addClass("nav-active");
});​

答案 1 :(得分:1)

然后使用closest方法siblings。这将遍历给定元素的父级,直到找到第一个LI项,然后找到兄弟li.nav-active元素。

$(".maillink").click(function(e) { $(this).closest("li").siblings("li.nav-active");  } );

答案 2 :(得分:1)

在点击处理程序中:

jQuery (this).parent().siblings('.nav-active').removeClass ('nav-active');
jQuery (this).parent().addClass('nav-active');

答案 3 :(得分:0)

$(".maillink").click(function(){ $(this).parents("nav-active li").DoRestOfCode(); });

我认为这就是你所要求的。