我正在研究一个应该是跨浏览器兼容的用户脚本,这可能解释了为什么我不按正常方式做事。该脚本显示一个名为box的浮动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函数,当我不想这样做时会隐藏它。添加锚.onclick函数后,您可以看到最后一个条目是return false;
,但这并不会阻止.click事件传播到父div。有没有办法防止这种情况发生?
答案 0 :(得分:0)
box.click(function(event) {
event.stopImmediatePropagation();
event.stopPropagation();
set_visible(false);
});