繁体   English   中英

防止在父div上调用JavaScript回调

[英]Preventing javascript callback from being called on parent div

我正在研究一个应该与跨浏览器兼容的用户脚本,这也许可以解释为什么我没有以正常方式进行操作。 该脚本显示一个浮动div命名框,它是一个jQuery对象。 点击功能如下所示:

box.click(function(event) {
    set_visible(false);
});

set_visible函数只执行box.fadeOut(500);

在父div内,我创建了一个不使用jQuery的菜单,而是使用像这样的函数数组创建了普通的旧JavaScript(我尝试使用jQuery重写此函数,但是在使数组函数正常工作时遇到了一些问题):

function doGMMenu() {
    if( !GM_falsifiedMenuCom.length ) { return; }
    var mdiv = document.createElement('div');
    for( var i = 0; GM_falsifiedMenuCom[i]; i++) {
        var bing;
        mdiv.appendChild(bing = document.createElement('a'));
        bing.setAttribute('href','#');
        bing.onclick = new Function('GM_falsifiedMenuCom['+i+'][1](arguments[0]); return false;');
        bing.appendChild(document.createTextNode(GM_falsifiedMenuCom[i][0]));
        if (i+1<GM_falsifiedMenuCom.length)
            mdiv.appendChild(document.createTextNode('\u00A0\u00A0|\u00A0\u00A0'));
    }
    status.contents().append(mdiv);
}

这是显示选项菜单的第一个数组函数的示例:

 function() { DisplaySlideMenu(true); }

我的问题是,当我单击链接时,会显示选项菜单,但是还会调用父divs box.click函数,在我不想使用它时将其隐藏。 添加anchor .onclick函数后,您可以看到最后一个条目return false; 但这不会阻止.click事件传播到父div。 有什么办法可以防止这种情况的发生?

box.click(function(event) {
    event.stopImmediatePropagation();
    event.stopPropagation();
    set_visible(false);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM