2012-01-26 110 views
2

我想選擇#one,#two和#two的兄弟。我有什麼更優雅的解決方案嗎?結合jquery選擇器

 $('#one, #two').click(function(e){ 
     e.stopPropagation(); 
    }); 

    $('#two').siblings().click(function(e){ 
     e.stopPropagation(); 
    }); 

回答

2

multiple selector exists;

$("#one, #parentIdOfTwo > *").click(function(e) { 
    e.stopPropagation(); 
}); 

也快得多。

+0

感謝您!這看起來非常優雅,而且很有用! –

+1

請注意,這不等同於OP代碼。它還會將事件處理程序添加到'#parentIdOfTwo'的所有後代。更好的是'#parentIdOfTwo> *'。 –

+0

你是絕對正確的,克林先生。我相應地更新了我的答案。 –

1

試試這個。看看我正在使用andSelf,它將堆棧中的前一組元素添加到當前集合,這對您的情況非常有幫助。

$('#one').add($('#two').siblings().andSelf()).click(function(e){ 
     e.stopPropagation(); 
}); 
+0

喜歡我的解決方案:)我也想過'andSelf'功能,但沒有成功 –

+0

單挑 - 代碼示例中有一個小錯字:它應該是'andSelf',而不是'addSelf'。 –

+0

@MathiasBynens - 感謝您在使用dv之前告訴我:P – ShankarSangoli

0
$('#one, #two').add($('#two').siblings()).click(function(e){ 
     e.stopPropagation(); 
    }); 
0

你可以使用:

$('#one, #two').add($('#two').siblings()).click(function(event) { 
    event.stopPropagation(); 
}); 

...或:

$('#one').add($('#two').parent().children()).click(function(event) { 
    event.stopPropagation(); 
});