关键字是否与此相反?

时间:2015-08-10 17:09:03

标签: javascript jquery this

是否有与关键字this相反的关键字?

    $('.lt-buttonContainer button').click(function () {

        var $this = $(this);

        $this.addClass("button1Clicked");
        $!this.removeClass("button1Clicked"); 
    })

4 个答案:

答案 0 :(得分:2)

不,在您的上下文中没有与this相反的关键字。

!this只取逻辑而不是this的值,这不会解决代码中的问题。

您的问题可能真的需要澄清,但在您的具体示例中,如果您想要原始集合中的所有元素,但不是this的当前值,那么'你的意思相反,那么你必须自己计算这个集合。

这可以这样完成:

$('.lt-buttonContainer button').click(function () {

    $('.lt-buttonContainer button').removeClass("button1Clicked"); 
    $(this).addClass("button1Clicked");
});

或者,如果您真的想要原始集合中不是this的元素集合,那么您可以这样做:

$('.lt-buttonContainer button').click(function () {

    $('.lt-buttonContainer button').not(this).removeClass("button1Clicked"); 
    $(this).addClass("button1Clicked");
});

虽然在这个特定情况下不需要第二个代码片段中的额外.not()操作,因为它在集合中的所有对象中对.removeClass()没有任何损害,然后再将其添加回一个。

答案 1 :(得分:2)

没有内置方法来获取所有其他元素。使用not()将其从集合中删除。

var buttons = $('.lt-buttonContainer button');
buttons.click(function () {

    var $this = $(this);

    $this.addClass("button1Clicked");
    buttons.not($this).removeClass("button1Clicked"); 
});

答案 2 :(得分:1)

以下代码段是否有帮助?

current_user

答案 3 :(得分:0)

您可以使用toggleClass() jq方法并使用以下逻辑委派事件:

$('.lt-buttonContainer').on('click', 'button:not(.button1Clicked)', function (e) {
    $(e.delegateTarget).find('button.button1Clicked').add(this).toggleClass("button1Clicked");
});

如果元素button是兄弟姐妹:

$('.lt-buttonContainer').on('click', 'button:not(.button1Clicked)', function () {
    $(this).siblings('button.button1Clicked').add(this).toggleClass("button1Clicked");
});