Подтвердить что ты не робот

Выберите элемент и его братьев и сестер

Переключение элемента и его братьев и сестер может выполняться как:

$(this).toggle();
$(this).prev().toggle();

Сочетание их не работает:

$(this,$(this).prev()).toggle();

Как оба варианта могут быть выбраны одновременно?

4b9b3361

Ответ 1

Кстати, хотя этот вопрос уже был ответил drinnhev, я подумал, что я вставлю этот быстрый эксперимент, который я только что сделал, после прочтения вопроса, который также работает, Хотя... это меня удивило, когда это произошло:

$('#recipient').click(
    function(){
        var pair = [this, this.previousElementSibling];
        $(pair).toggleClass('red green');
    });​

JS Fiddle demo.

Кстати, 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);
​

JS Fiddle demo

Ответ 2

Для jQuery 1.8+ используйте .addBack():

$(this).prev().addBack().toggle();

Для более ранних версий jQuery используйте устаревший вызов .andSelf() (см. demo):

$(this).prev().andSelf().toggle();

Ответ 3

для предыдущих братьев и сестер:

$(this).prev().andSelf().toggle();

для всех братьев и сестер:

$(this).parent().children().toggle();

Ответ 4

Также работает:

$(this).prev().add($(this)).toggle()