jQuery让兄弟姐妹或最接近的元素无效

时间:2014-10-28 21:51:06

标签: javascript jquery html siblings closest

我无法让这一小段代码发挥作用。我基本上试图获得点击的ahref的兄弟,但它只返回被点击的元素本身(使用console.log()来测试它)。

$('.script-vote').click(function(e) {
    e.preventDefault();
    var href = $(this);

    href.siblings('.script-vote') //This doesn't work
        .removeClass('active');

    href.closest('.script-vote') //This doesn't work
        .removeClass('active');
});

我的HTML:

<div class="one-half t-center">
    <a href="..." class="script-vote up" title="Upvoten">
        <i class="fa fa-thumbs-o-up"></i>
        <span class="score"><?=$post->getUpVotes()?></span>
    </a>
</div>
<div class="one-half t-center">
    <a href="..." class="script-vote down" title="Downvoten">
        <i class="fa fa-thumbs-o-down"></i>
        <span class="score"><?=$post->getUpVotes()?></span>
    </a>
</div>

因此,当我点击.script-vote.up元素时,我想删除active.script-vote.down。提前谢谢。

1 个答案:

答案 0 :(得分:1)

&lt; a&gt; HTML中的元素没有任何兄弟姐妹。但他们的父母呢。确保它们包含在父母div中:

<div class="voting-container">
<div class="one-half t-center">
    <a href="..." class="script-vote up" title="Upvoten">
       <i class="fa fa-thumbs-o-up"></i>
        <span class="score"><?=$post->getUpVotes()?></span>
    </a>
</div>
<div class="one-half t-center">
    <a href="..." class="script-vote down" title="Downvoten">
        <i class="fa fa-thumbs-o-down"></i>
        <span class="score"><?=$post->getUpVotes()?></span>
    </a>
</div>
</div>

您可以使用jQuery作为示例来引用以下JavaScript:

$(".script-vote").click(function(){

    var otherVotingButton = $(this).parent().siblings(".one-half").first().find(".script-vote");

    otherVotingButton.css("background-color","red");     

    otherVotingButton.href="#";
    otherVotingButton
        .off() //remove original event handler
        .click(function() { alert("you already voted!");});
});

获取父母的兄弟,然后获得脚本投票&lt; a&gt;里面的元素。