use*_*853 3 javascript jquery function
我想知道是否有办法排除函数上的某些元素.例如:
window.onclick = doThis() except if the element clicked is a 'ul' element.
Run Code Online (Sandbox Code Playgroud)
这样的事情.我知道它可能必须这样写:
function doThis() {
if (this item clicked is NOT 'ul') {
function xyz();
}}
window.onclick = doThis();
Run Code Online (Sandbox Code Playgroud)
我只是不确定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>
Run Code Online (Sandbox Code Playgroud)
我添加了下面建议的target.nodeName!==代码,但它仍然无效.当我点击一个ul它仍然关闭我的菜单.谢谢.
window.onclick = function(ev){
if( ev.target.nodeName !== 'UL' ){
xyz();
}
};
Run Code Online (Sandbox Code Playgroud)
我们在这里做的是将事件对象作为参数.这样我们就可以获得click事件的目标.我们正在这里做 - 我们检查目标是否是一个ul元素.如果没有,请运行该功能.
此外,仅供将来参考,您必须将该功能分配给onclick.因此,首先将函数分配给变量,然后将变量分配给onclick(不带括号).我在某个地方读到这个......我会试着把它拉出来.
| 归档时间: |
|
| 查看次数: |
3007 次 |
| 最近记录: |