Gar*_*ary 16 jquery siblings jquery-selectors
切换元素及其兄弟元素可以完成如下:
$(this).toggle();
$(this).prev().toggle();
Run Code Online (Sandbox Code Playgroud)
将它们组合起来不起作用:
$(this,$(this).prev()).toggle();
Run Code Online (Sandbox Code Playgroud)
如何同时选择两者?
dri*_*hev 32
对于jQuery 1.8+,使用.addBack():
$(this).prev().addBack().toggle();
Run Code Online (Sandbox Code Playgroud)
对于早期的jQuery版本,请使用已弃用的.andSelf()调用(请参阅演示):
$(this).prev().andSelf().toggle();
Run Code Online (Sandbox Code Playgroud)
对于兄弟姐妹和自我:
$(this).prev().andSelf().toggle();
Run Code Online (Sandbox Code Playgroud)
为所有兄弟姐妹和自己:
$(this).parent().children().toggle();
Run Code Online (Sandbox Code Playgroud)
顺便说一下,虽然drinchev已经回答了这个问题,但我认为在阅读问题之后我会粘贴这个快速实验,这也很有用.虽然......当它发生时它让我感到惊讶:
$('#recipient').click(
function(){
var pair = [this, this.previousElementSibling];
$(pair).toggleClass('red green');
});?
Run Code Online (Sandbox Code Playgroud)
顺便提一下,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);
?
Run Code Online (Sandbox Code Playgroud)