Переключение элемента и его братьев и сестер может выполняться как:
$(this).toggle();
$(this).prev().toggle();
Сочетание их не работает:
$(this,$(this).prev()).toggle();
Как оба варианта могут быть выбраны одновременно?
Переключение элемента и его братьев и сестер может выполняться как:
$(this).toggle();
$(this).prev().toggle();
Сочетание их не работает:
$(this,$(this).prev()).toggle();
Как оба варианта могут быть выбраны одновременно?
Кстати, хотя этот вопрос уже был ответил drinnhev, я подумал, что я вставлю этот быстрый эксперимент, который я только что сделал, после прочтения вопроса, который также работает, Хотя... это меня удивило, когда это произошло:
$('#recipient').click(
function(){
var pair = [this, this.previousElementSibling];
$(pair).toggleClass('red green');
});
Кстати, JS Perf потерянное сравнение двух селекторов приближается.
Отредактировано, чтобы добавить IE - (насколько мне известно) - дружеское обновление, хотя я в настоящее время оседлал все браузеры с ним, а не обнаружил функцию (также, я, наконец, понял, что синий!= зеленый):
function pESibling(n){
var nPS = n.previousSibling;
if (!n || nPS === null){
return false;
}
else if (nPS.nodeType == 1){
return nPS;
}
else {
return pESibling(nPS);
}
}
var that = document.getElementById('recipient'),
pair = [that, pESibling(that)];
$(pair).toggleClass('red green');
console.log(pair);
Для jQuery 1.8+ используйте .addBack()
:
$(this).prev().addBack().toggle();
Для более ранних версий jQuery используйте устаревший вызов .andSelf()
(см. demo):
$(this).prev().andSelf().toggle();
для предыдущих братьев и сестер:
$(this).prev().andSelf().toggle();
для всех братьев и сестер:
$(this).parent().children().toggle();
Также работает:
$(this).prev().add($(this)).toggle()