我正在做一个在桌面和移动设备上运行的应用程序,它有一个div,当用户在div之外单击或点击时,它会隐藏起来。这个div位于其他元素之上,我遇到的问题是,当用户在它隐藏的div之外点击时,它还会在它下面的一个元素上执行click事件。当调用mousedown
事件时,此功能在桌面上运行良好。我添加的代码是:
$(document).on( "mousedown touchstart", function(e){
if (isSearchOpen) {
if (!$(searchContainer).is(e.target) && $(searchContainer).has(e.target).length === 0) {
$('input[name=q]','form[name=searchFormMobile]').val('');
$('input[name=q]','form[name=searchForm]').val('');
$(searchOverlay).hide();
isSearchOpen = false;
}
}
});
我尝试在第二个if-statement
中调用e.preventDefault()
、e.stopPropagation()
和return false;
,但都不起作用。此弹出窗口可以出现在多个“页面”上,所以我希望避免尝试捕获任何可能的元素,并在可能的情况下以这种方式处理此问题。
任何帮助都将不胜感激!
发布于 2015-08-10 15:55:29
您可以尝试将模糊事件添加到div中。每当用户在div外部单击或点击时,都会触发一个事件。
发布于 2015-08-10 16:39:45
使用z-Index
100附加一个具有全屏幕宽度和高度的透明div,对于您的DIV
,将z-Index
设置为101。对于覆盖DIV
上的Onclick事件,从DOM中删除这两个DIVs。仅供参考,jquery-Ui模式对话框也做同样的事情。;)
https://stackoverflow.com/questions/31923710
复制