Javascript Jquery - 如果单击子元素,则不关闭

时间:2012-01-22 19:02:40

标签: javascript jquery function

好的,我有一个脚本可以关闭所有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()函数。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用更多高效紧凑方式使用JQuery:

$(window).click(function(ev){
    if(!$(ev.target).is('.ddHeader,.ddSubmenu,.ddContainer,.ddItem,.ddHeader > input'))
        delay_close_sub();
});

这意味着如果事件目标与任何逗号分隔的选择器都不匹配,请关闭您的事物。

答案 1 :(得分:0)

使用getElementsByTagName

ev.target.element.getElementsByTagName('input').length == 0