好吧,我有一个脚本可以关闭所有 div,除非这些 div 具有此类名称。以下脚本运行良好:
window.onclick = function(ev){
if((ev.target.className !== 'ddHeader') && (ev.target.className !== 'ddSubmenu')&&
(ev.target.className !== 'ddContainer')&& (ev.target.className !== 'ddItem')){
delay_close_sub();
}
};
所以现在我需要对子元素做同样的事情。我想将其添加到上面的代码中,类似于:
window.onclick = function(ev){
if((ev.target.className !== 'ddHeader') && (ev.target.className !== 'ddSubmenu')&&
(ev.target.className !== 'ddContainer')&& (ev.target.className !== 'ddItem') &&
ev.target.element !== 'ddHeader > input){
delay_close_sub();
}
};
我在末尾添加了: ev.target.element !== 'ddHeader > input') 但它不起作用。我该如何做这个工作?我想确保当 ddHeader div 内的输入字段被单击时,它不会触发“delay_close_sub() 函数。
感谢您的帮助。
最佳答案
您可以以更高效紧凑的方式使用 JQuery:
$(window).click(function(ev){
if(!$(ev.target).is('.ddHeader,.ddSubmenu,.ddContainer,.ddItem,.ddHeader > input'))
delay_close_sub();
});
这意味着如果事件目标与任何逗号分隔的选择器都不匹配,请关闭您的事物。
关于Javascript Jquery - 如果单击子元素则不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963731/