質問

2011-08-09 11 views
1

可能性の重複:
How to detect a click outside an element?質問

私はページ上の要素を持っているか、私は「追跡しまうイベントが発生します、jQueryのを使用する "myDiv" を言います「myDiv」以外の場所で「タップ」する

私はiPadでテストしたいと思うので「タップ」と言っています...「タップ」ではなく通常の「クリック」イベントを想定することもできます...ポイントは必要ですか?あなたは、あなたが任意の領域

$(document).click(function() { 
    //your code here 
}); 

をクリックしたときに何をしたいのか登録でき、次その後あなたは自分のdivからコールバックを削除して

答えて

0

はbody要素とクリックイベントの伝播を停止しmyDivに別のクリックハンドラにクリックハンドラをバインドしてください。この概念を示すjsFiddleがあります。

-1

「myDiv」の「外」とします。

$("#myDiv").unbind("click"); 

これは機能するはずです。

+0

これは機能しません。それを実証する[フィドル](http://jsfiddle.net/ZyqWZ/)があります。 – Spycho

0

タグのイベントがそれを行う必要があります。

$("html").click(function(e) { 
    alert("Test"); 
}); 

例:

$("div:not(div#winner)").live('click', function(e) { 
    alert("Test"); 
}); 

例: http://jsfiddle.net/HenryGarle/HWApM/1/

またはそのネストされたdivの場合:

あなたがいないセレクタを使用することができ、ニーズに応じて http://jsfiddle.net/HenryGarle/HWApM/

$("html").click(function(e) { 
    alert("Test"); 
}); 

$("#winner").live('click', function(e) { 
    e.stopPropagation(); 
}); 

例: http://jsfiddle.net/HenryGarle/HWApM/2/

+0

なぜ 'live'を' html'タグに使用しますか? –

+0

ライブは、処理しようとしているコンテンツが、イベントハンドラを定義しているポイントの後に生成された場合にのみ必要です。しかし、それは(特定の状況において)より効率的であり得る。あなたが正当な理由がなければ、私はおそらくここでそれを使用しないでしょう。 – Spycho

+0

私は@ Henryの最後の解決策はセレクターよりも柔軟で適切だと思います。私は私の解決策で伝播を止めました。 – Spycho