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

这是一种方法。您可以只有两个单击事件,并在单击文档时检查单击事件的目标,并验证它不是链接。我确信有更好的方法可以做到这一点,但它有效:

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 回答