Javascript Jquery - не закрывать, если щелкнуть дочерний элемент - PullRequest
0 голосов
/ 22 января 2012

Хорошо, у меня есть скрипт, который закрывает все мои 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') до конца, но он не работает.Как бы я сделал эту работу?Я хочу убедиться, что когда поле ввода внутри div ddHeader щелкает, оно не вызывает функцию delay_close_sub ().

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 22 января 2012

Вы можете использовать JQuery гораздо более эффективным компактным способом:

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

Что означает, что если цель события не соответствует ни одному из селекторов, разделенных запятыми, закройтевещь.

0 голосов
/ 22 января 2012

Использовать getElementsByTagName :

ev.target.element.getElementsByTagName('input').length == 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...