我有一个表行,当根据所选行单击时,它使用javascript打开某些菜单。我还有一个<a href>
标签,用于打开链接或重定向到其他地方。
问题是,当我单击<a href>
链接时,也会执行打开菜单的表行。
其PHP/Javascript语言。
这是tr:表的脚本
echo "<tr onclick="enableDialogs(1)";>";
对于同一行中的<a>
链路:
echo "<td><a href='?folder={$filedir}'>{$list}</a></td>";
问题是,如何避免两者在点击功能上的重叠?
您有一个典型的事件冒泡案例。正如一些注释所建议的那样,利用订阅元素的回调,引用第一个参数,并停止标记中的冒泡。假设myElement
是<a>
的1个DOM节点。
myElement.addEventListener("click", function(e) {
e.stopPropagation();
}, false);
当然,jQuery回调的工作原理与相同
$(myElement).click(function(e) {
e.stopPropagation();
});
创建一个函数来检查菜单是否已经打开。
如果它是打开的,它将继续重定向或执行您的代码当前所做的任何操作。如果不是,它只是打开它。
基本上,让函数来处理整个事情。
您需要停止事件传播。
请参阅演示 。
javascript代码:
function stopPropagation(e) {
if(!e) var e = window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
e.returnValue = false;
}
}
php代码:
echo "<td><a href='?folder={$filedir}' onclick="stopPropagation(event)">{$list}</a></td>";