jquery文档正文单击事件
有人可以帮我吗? :
我有一个按钮,当点击它显示一个特定的div。 这个div有几个后代。 现在,我想要的是当我点击文档中的其他位置时, 但不会在任何后代中单击此div消失。 我认为使用not选择器是这样的:
$("#button").click(function(){ $("#mydiv").show(); $(document.body).not($("#mydiv").children()).one('click',function(e) { $("#mydiv").hide(); }); return false; });
但这不起作用! 知道为什么吗? 谢谢
如何检查点击事件以查看点击的内容? 具体来看看event.target
。
$(document).click(function(event) { var target = $(event.target); if (!target.attr('id').match(/^mydiv/) && target.parents('#mydiv').length == 0) { $('#mydiv').hide(); } });
我之前使用过这段代码来关闭一个打开的窗口,当有人点击窗口以外的任何地方时。
使用最接近检查目标是否为mydiv
的后代。
$("#button").click(function(){ $("#mydiv").show(); $(document.body).click(function() { if ($(event.target).closest("#mydiv").length == 0) $("#mydiv").hide(); }); return false; });
您不能使用one()
因为如果您在mydiv
单击,事件将被删除。 如果要删除它,则必须执行一些自定义事件解除绑定。
问题可能在于您传递给要排除的.not()
.not($("#mydiv").children())
在您传递jQuery对象的那一刻,但是从文档中传递的内容.not()
应该是字符串选择器,DOM元素或DOM元素数组。 因此,只需将jQuery对象转换为元素数组即可
$("#button").click(function(){ var myDiv = $("#mydiv").show(); $(document.body).not(myDiv.children().get()).one('click',function(e) { myDiv.hide(); }); return false; });