10

divをクリックしてそれが子である場合を除いて、どこかをクリックしたときに何かをしたいです。これは私がこれまでに試したことですが、機能していません (その子をクリックすると、括弧内にあるものが実行されます。

$('body').on('click', '* :not(#calculator)',  function(e){

私はこのようなものを使用することはできません:

jQuery - 単一の要素とその子を除くすべてを選択しますか?

$("body > *").not("body > #elementtokeep").remove();

.not関数は関数の中に入れることができるものではないからです.on()

どうすればこれを達成できますか?

4

4 に答える 4

14

要素自体と要素の子の両方のセレクターを使用するには、コンマと共に not を使用します。

jQuery(document.body).on("click", ":not(#calculator, #calculator *)", function(e){ 
    console.log(this); 
    e.stopPropagation(); 
});​​​​​​​

jsフィドル

于 2012-10-02T12:39:15.977 に答える
7

関数内で問題の要素を確認できます。

$('body').click( function(e){
    if (!$(e.target).is("#calculator") || $("#calculator").has(e.target).length ) {
        // do your stuff
    }
});
于 2012-10-02T12:36:05.993 に答える
1

コメントを追加するのに十分な要件がないため、ここで@epascarelloに質問する必要があります。私が子供をほとんど作らなかったとき、AとBはまだ影響を受けていました。私が間違っているかどうかはわかりませんが、本当に解決したいのです。

jQuery(document.body).on("click", ":not(#calculator, #calculator *)", function(e){ 
    console.log(this); 
    e.stopPropagation(); 
    alert('test');
});

ライブデモ

于 2013-09-12T07:42:58.583 に答える
-1

それ以外の

$('body').on('click', '* :not(#calculator)',  function(e){

});​

使用できます(このバージョンはよりパフォーマンスが高いため推奨されます)

$("body").on("click", ":not(#calculator, #calculator *)", function(e){ 

});​

また

$("body :not(#calculator, #calculator *)").on("click", function(e){ 

});​
于 2012-10-02T12:56:56.940 に答える