Nawiasem mówiąc, podczas gdy kwestia ta została już answered by drinchev , Myślałem, że wkleiłem ten szybki eksperyment, który właśnie zrobiłem, po przeczytaniu pytania, które również działa. Chociaż ... to mnie zaskoczyło, kiedy to miało miejsce:
$('#recipient').click(
function(){
var pair = [this, this.previousElementSibling];
$(pair).toggleClass('red green');
});
JS Fiddle demo.
Nawiasem mówiąc, JS Perf loose comparison of the two selector approaches.
Zmieniano dodać IE- (o ile wiem)-friendly aktualizację, aczkolwiek jestem obecnie siodłaniem wszystkie przeglądarki z nim, a nie funkcje wykrywania (również, ale w końcu zrozumiał, że niebieski ! = zielony):
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
Radości z sieci! Niepoważnie..! =) Aby skrócić długą historię [IE <9 nie "wykonaj" "previousElementSibling"] (http://www.quirksmode.org/dom/w3c_core.html#t84). Jest jednak stare i zawsze modne podejście "jeśli". =) –
Robiłem głupi błąd podczas testowania twojego rozwiązania. Podczas, gdy nie, 'previousElementSibling' nie załatwi sprawy, po prostu używając tablicy będzie ...' $ ([$ (this), $ (this.prev())]) 'robi to! – Gary
Istnieje łatwiejszy sposób $ (this) .prev(). AndSelf(). Toggle(); –