我似乎有另一个问题,我不是在征服。真正简单的前提。 我有一个mousedown事件,基本上如果点击页面上的一个特定元素,我不想发生任何事情,否则我想隐藏()一些div。
$(function(){
$("document :not(#_ignorelement)").mousedown(function(event){
if($('#_hidethiselement').length){
$('#_hidethiselement').hide();
}
})
})
这根本不起作用。我也尝试了以下内容:
$(document).not($("#_ignorelement")).mousedown(function(event){
$(document).not("_ignorelement").mousedown(function(event){
如果我能解决这个问题,好奇我将如何实际拥有“:not”包含父div,如下所示:
$().not("_ignoreelement").parent().closest('div').mousedown(function
因为元素“_ignorelement”是div中的锚标记。想知道如何使用父div而不是锚标签。
无论如何,任何帮助都将不胜感激。
答案 0 :(得分:2)
document
不是您可以选择的节点。试试这个:
$(function(){
$("body :not(#_ignorelement)").mousedown(function(event){
if($('#_hidethiselement').length){
$('#_hidethiselement').hide();
}
return false;
})
});
答案 1 :(得分:1)
这应该有效:
var ignoreNode = jQuery('#_ignorelement')[0];
jQuery(document).on('mousedown', function(e) {
if (ignoreNode === e.target || jQuery.contains(ignoreNode, e.target)) {
// If the target is, or is inside the ignoreNode, don't
// do anything.
return;
}
// Do your hiding handling here
});
请注意,缓存jQuery对象确实是一个好主意,这样您就不会在每个事件上运行选择器查询!