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

Javascript JQuery文档单击取消绑定删除所有子单击事件,javascript,jquery,javascript-events,onclick,Javascript,Jquery,Javascript Events,Onclick,我使用JQuery的live()向特定元素添加了一个单击事件: 稍后,我将bind()添加到文档: $(document).bind('click'); 单击文档后,我将取消绑定文档单击 $(document).unbind('click'); 这导致了问题:my#foo元素不再具有click事件,因为它是文档的子元素。如何删除文档的click,使#foo元素保持不变 以下是演示: 您可以使用事件名称空间 这里有一种方法。您可以有两个单击事件,并在单击文档时检查单击事件的目标,并验证它

我使用JQuery的live()向特定元素添加了一个单击事件:

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

 $(document).bind('click');
单击文档后,我将取消绑定文档单击

 $(document).unbind('click');
这导致了问题:my#foo元素不再具有click事件,因为它是文档的子元素。如何删除文档的click,使#foo元素保持不变

以下是演示:

您可以使用事件名称空间


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

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);
   }      
});

$(文档)。解除绑定('click')
不应删除除
文档
之外的任何内容的单击处理程序<代码>#foo应该保持不变。一定是出了什么问题。事实并非如此;旁注:您可以用于在执行一次后自动解除绑定的事件处理程序。我刚刚修改了我的问题,并提供了更多详细信息和更正。还有一个演示。很抱歉,被忽略的是live(),而不是bind()。请尝试在或委托上执行
,而不是
live
。可能是因为
live
在文档上附加了委托事件处理程序?
$(document).bind('click.documentEvent');

$(document).unbind('click.documentEvent');
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);
   }      
});