3

我有一个表格行,它使用 javascript 在基于选定行单击时打开某些菜单。我还有一个<a href>用于打开链接或重定向到其他地方的标签。

问题是,当我单击<a href>链接时,也会执行打开菜单的表格行。

它的 PHP/Javascript 语言。

这是表 tr 的脚本:

echo "<tr onclick=\"enableDialogs(1)\";>";

对于<a>同一行中的链接:

echo "<td><a href='?folder={$filedir}'>{$list}</a></td>";

问题是,我如何避免两者在点击功能上的重叠?

4

3 回答 3

2

创建一个函数来检查菜单是否已经打开。

如果它是打开的,它将继续重定向或执行您的代码目前所做的任何事情。如果不是,它只是打开它。

基本上,让函数来处理整个事情。

于 2012-07-30T02:49:10.617 回答
2

你有一个事件冒泡的经典案例。正如一些评论所建议的那样,利用订阅元素的回调,引用第一个参数,并停止标签的冒泡。假设myElement是 1 个 DOM 节点<a>

myElement.addEventListener("click", function(e) {
   e.stopPropagation();
}, false);

当然 jQuery 回调的工作原理是一样的

$(myElement).click(function(e) {
    e.stopPropagation();
});
于 2012-07-30T02:58:35.493 回答
1

您需要停止事件传播。

见演示

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>";

​</p>

于 2012-07-30T03:13:37.717 回答