2012-01-26 20 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

コードサンプルに小さな誤植があります:' addSelf'ではなく 'andSelf'でなければなりません。 –

+0

@MathiasBynens - 人々の前に私に知らせてくれてありがとう: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(); 
});