.addClass()到$(this)附近的元素但在它之外

时间:2014-03-28 11:42:27

标签: javascript jquery parent addclass

我有这个:

<div class="mycontainer active">
    <a href="#" class="mylink">link</a>
</div>

<div class="mycontainer">
    <a href="#" class="mylink">link</a>
</div>

我希望&#34;移动&#34;当我点击其中的链接时,活动类到第二个容器。

我尝试使用以下jQuery:

$('.mycontainer .mylink').on('click', function(){
    $(".active").removeClass('active');
    $(this).parent().find(".mycontainer").addClass('active');
});

但这不起作用,实际上我不太了解Javascript / jQuery,我做错了什么? 感谢任何形式的帮助。

5 个答案:

答案 0 :(得分:7)

你可以改用:

$('.mycontainer .mylink').on('click', function () {
    $(this).closest('.mycontainer').addClass('active').siblings('.mycontainer.active').removeClass('active');
});

答案 1 :(得分:1)

尝试:

$(this).parent().addClass('active');

或:

 $(this).parent(".mycontainer").addClass('active');

代替。因为$(this).parent()已经引用了您正在寻找的元素,然后使用find(),您试图在其中找到内容为mycontainer的元素,但这些元素将无效。

答案 2 :(得分:1)

该行:

$(this).parent().find(".mycontainer")

正在寻找mycontainer div,然后在其中寻找.mycontainer,当你实际上已经在那里时。

请改为尝试:

$('.mycontainer .mylink').on('click', function(){
    $(".active").removeClass('active');
    $(this).parent().addClass('active');
});

答案 3 :(得分:1)

您想要在点击的链接上添加活动类...

示例: http://jsfiddle.net/LCaNP/

$('.mycontainer .mylink').on('click', function(){
    $('.mycontainer').removeClass('active');
    $(this).parent().addClass('active');
});

答案 4 :(得分:0)

$('.myContainer').toggleClass('active')

应该这样做。 它将删除它所在的类,并添加它不存在的位置。 查看.toggleclass()

所以,代码是 -

$('.mycontainer .mylink').on('click', function(){
   $('.myContainer').toggleClass('active');
});

Herr&#39; JSFiddle