2012-03-21 3 views
5

いくつかの要素を除外する必要があるクリックイベントのリスナーがあります。Jquery closest()を使用して複数の要素でセレクタを作成できますか?

今、私のリストは成長しているので、私はセレクタの複数の要素を "束ねる"より良い方法を探しています。

これは私が持っているものです。

$(document).on('click tap', function(event) {    
    if ($(event.target).closest('div:jqmData(panel="popover")').length > 0 || 
     $(event.target).closest('div.pop_menuBox').length > 0 || 
     $(event.target).closest('.toggle_popover').length > 0) || 
     $(event.target).closest('.ui-selectmenu').length > 0 { 
      return; 
    } 
    // do stuff 
}); 

は、これらの要素を除外するためのより良い方法はありますか?

ありがとうございました!

+0

jqueryが動作しているHTMLを更新できますか? –

+0

あなたは同じクラスをチェックしたい各要素を与えるだけではありませんか? – Deadlykipper

+0

あなたは何を意味するのか分かりませんか?私はJquery 1.7.1(とJquery Mobile)を使用しています – frequent

答えて

18

あなたが意味し、CSSセレクタを指定することができます:あなたが二つ以上のセレクタを指定するには、カンマを使用することができます。

if($(event.target).closest('div:jqmData(panel="popover"), div.pop_menuBox, .toggle_popover, .ui-selectmenu').length > 0) { 
    return; 
} 
2

カンマを使用してください。あなたが最も近いのために複数のセレクタを提供することができますjQueryのドキュメントによると

if ($(event.target) 
    .closest('div:jqmData(panel="popover"), div.pop_menuBox, .toggle_popover, .ui-selectmenu').length > 0) { 
    return; 
} 
0
+0

はい、私はこれも読んでいます。 「この署名(唯一!)はjQuery 1.7で廃止されました。このメソッドは、主に内部的にまたはプラグイン作成者によって使用されることを意図しています。 Jqueryページの意味は? 「署名」とは何ですか? – frequent

+0

それを指摘してくれてありがとう。それはあなたのために働くのですか?また、jQueryがそのセレクタを配列の中に置く理由について興味があります: 'var close = $(" li:first ")。closest([" ul "、" body "]);' –

+0

ちょうどそれを試した。通常のコンマでセレクタを実行すると、それが動作します。私は配列のものはもはやサポートされていると仮定します。後でそれをテストします – frequent