2

JQuery の live() を使用して、特定の要素にクリック イベントを追加します。

 $('#foo').live('click');

後で、bind() をドキュメントに追加します。

 $(document).bind('click');

ドキュメントがクリックされると、ドキュメントのクリックをバインド解除します

 $(document).unbind('click');

これにより問題が発生しました。ドキュメントの子であるため、#foo 要素にはクリック イベントがありません。#foo 要素をそのままにしてドキュメントのクリックを削除するにはどうすればよいですか?

ここにデモがあります: http://jsfiddle.net/zS2Mt/2/

4

2 に答える 2

5

イベント名前空間を使用できます

名前空間イベント

$(document).bind('click.documentEvent');

$(document).unbind('click.documentEvent');
于 2012-06-12T14:28:59.017 に答える
0

ここに 1 つのアプローチがあります。クリック イベントを 2 つだけ設定し、ドキュメントをクリックしたときにクリック イベントのターゲットをチェックして、それがリンクではないことを確認できます。これを行うにはもっと良い方法があると確信していますが、うまくいきます:

var clicked = "I am clicked. Click outside!";
var unclicked = "Click me now!";

$('#foo').click(function() {
   if($(this).html() == unclicked) {
       $(this).html(clicked);
   }      
});

$(document).click(function(e) {
   if(e.target != $('#foo')[0] && $('#foo').html() == clicked) {
       $('#foo').html(unclicked);
   }      
});

http://jsfiddle.net/zS2Mt/3/

于 2012-06-12T15:30:38.770 に答える