Мне интересно, есть ли способ исключить определенные элементы в функции. Например:
window.onclick = doThis() except if the element clicked is a 'ul' element.
Нечто подобное. Я знаю, что это, вероятно, должно быть написано так:
function doThis() {
if (this item clicked is NOT 'ul') {
function xyz();
}}
window.onclick = doThis();
Я просто не уверен, есть ли "исключение" в javascript. Может кто-нибудь, пожалуйста, помогите. спасибо.
Хорошо, вот мой полный код, потому что он все еще не работает:
<script type="text/javascript">
function ddMenu() {
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function ddMenu_open(e)
{
//ddMenu_canceltimer();
ddMenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
//return false;
//preventDefault();
}
//return true;
}
function ddMenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }
function ddMenu_timer()
{ closetimer = window.setTimeout(ddMenu_close, timeout); }
function ddMenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#ddMenu > li').bind('click', ddMenu_open);
$('#ddMenu li ul').bind('click', ddMenu_timer);
//$('#ddMenu > li').bind('mouseout', ddMenu_timer);
//$('#ddMenu > li').bind('mouseover', ddMenu_canceltimer);
});
document.onclick = function(ev){
if(ev.target.nodeName !== 'ul') {
ddMenu_close();
}
};
}
</script>
Я добавил код target.nodeName! ==, который был предложен ниже, но он все еще не работает. Когда я нажимаю на ul, он все равно закрывает мое меню. спасибо.