Por cierto, mientras que esta cuestión ya ha sido answered by drinchev , Pensé en pegar este experimento rápido que acabo de hacer, después de leer la pregunta, que también funciona. Aunque ... me sorprendió cuando lo hizo:
$('#recipient').click(
function(){
var pair = [this, this.previousElementSibling];
$(pair).toggleClass('red green');
});
JS Fiddle demo.
Por cierto, un JS Perf loose comparison of the two selector approaches.
Editado para añadir un IE-(por lo que yo sé) -Friendly actualización, aunque actualmente estoy ensillar todos los navegadores con él, en lugar de función de detección (también, por fin se dio cuenta de que el azul ! = verde):
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
¡Las alegrías de la web! No en serio..! =) Para abreviar una larga historia [IE <9 no 'hace' 'previousElementSibling'] (http://www.quirksmode.org/dom/w3c_core.html#t84). Aún así, está el antiguo, y siempre a la moda, enfoque 'si'. =) –
Estaba cometiendo un estúpido error al probar su solución. Mientras, no, 'previousElementSibling' no hará el truco, simplemente usando una matriz ...' $ ([$ (this), $ (this.prev())]) 'lo hace! – Gary
Hay una forma más fácil $ (this) .prev(). Y Self(). Toggle(); –