2015-08-10 5 views
0

Есть ли ключевое слово, противоположное ключевому слову this?Есть ли противоположность ключевому слову?

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

     var $this = $(this); 

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

Java = Javascript – durron597

+2

Что вы имеете в виду противоположное ? Вы хотите, чтобы все остальные не выбрали? – epascarello

+0

Можете ли вы подробнее рассказать о том, что вы имеете в виду? Я не вижу, что может быть противоположностью этого ... – Unome

ответ

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() из всех объектов в коллекции, прежде чем добавлять их обратно.

+0

Ну, ваша первая версия вашего вопроса была уверена в дерьме. Может быть, нисходящий голос пришел ко всем твоим изменениям. – epascarello

+0

@epascarello - это было не более дерьмово, чем формулировка вопроса . Иногда ответы - это прогрессивное открытие того, что на самом деле означает плохо написанный вопрос. – jfriend00

+0

Спасибо, что вы сработали! – MerCat

2

Нет встроенного метода для получения всех остальных элементов. Используйте not(), чтобы удалить его из коллекции.

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

    var $this = $(this); 

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

Помогает ли следующий фрагмент?

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

    var $this = $(this); 

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

Да, так я понимаю, что нет «ключевого слова», которое я мог бы использовать? – MerCat

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"); 
});