href和tr单击以避免重叠



我有一个表行,当根据所选行单击时,它使用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>";

最新更新