gpt4 book ai didi

javascript - window.onclick 除非元素是 'someElement'

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:18 24 4
gpt4 key购买 nike

我想知道是否有办法排除函数中的某些元素。例如:

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 时,它仍会关闭我的菜单。谢谢。

最佳答案

window.onclick = function(ev){
if( ev.target.nodeName !== 'UL' ){
xyz();
}
};

我们在这里所做的是使事件对象成为一个参数。这样我们就可以得到点击事件的目标。我们在这里正是这样做的——我们检查目标是否是一个 ul 元素。如果没有,运行函数。

此外,为了将来引用,您必须将函数分配给 onclick。所以先把函数赋给一个变量,然后把变量赋给onclick(不带括号)。我在某个地方读到过这个……我会试着把它拉起来。

关于javascript - window.onclick 除非元素是 'someElement',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com