JQuery文档单击取消绑定删除所有子项单击事件

时间:2012-06-12 14:25:47

标签: javascript jquery javascript-events onclick

我使用JQuery的live():

将click事件添加到特定元素
 $('#foo').live('click');

稍后,我将bind()添加到document:

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

点击文档后,我取消绑定文档

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

这导致了问题:我的#foo元素不再有click事件,因为它是文档的子元素。如何删除文档的单击,保持#foo元素不变?

这是演示: http://jsfiddle.net/zS2Mt/2/

2 个答案:

答案 0 :(得分:5)

您可以使用事件命名空间

Namespaced Events

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

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

答案 1 :(得分: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/