好的,我有一个脚本可以关闭所有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>输入')到最后但它不起作用。我怎么做这个工作?我想确保当ddHeader div中的输入字段被单击时,它不会触发“delay_close_sub()函数。
感谢您的帮助。
答案 0 :(得分:2)
您可以使用更多高效紧凑方式使用JQuery:
$(window).click(function(ev){
if(!$(ev.target).is('.ddHeader,.ddSubmenu,.ddContainer,.ddItem,.ddHeader > input'))
delay_close_sub();
});
这意味着如果事件目标与任何逗号分隔的选择器都不匹配,请关闭您的事物。
答案 1 :(得分:0)
ev.target.element.getElementsByTagName('input').length == 0