2

尝试做一些管理后端的事情,

我有一个包含动作链接的 tr 行。

<tr>
    <td>
    <span>item1</span>
    </td>
    <td>
    <a href="#">delete</a>
    </td>
</tr>

当用户单击 tr 行时,它应该选择它(并且处理程序绑定到该事件,因此我可以在其他地方显示额外信息),并且当用户单击删除链接时,应该调用另一个处理程序来删除该项目。

为两个目标设置点击事件,如下所示:

$("tr").click(function(e){
        // show line infos, by reloading the page
});

$("tr a").click(function(e){
    // delete item  
}); 

当我单击删除链接时,似乎总是首先调用 tr 事件,并且由于我的 tr 处理程序重新加载页面,因此永远不会调用链接的处理程序。这很正常,因为冒泡系统会按以下顺序调用我的处理程序:

下降阶段:tr a

上升阶段:一个 tr

如何在 down 阶段跳过第一个 tr 的处理程序?

我用 e.preventDefault()、e.stopPropagation() 尝试了一些事情,但没有成功。

4

3 回答 3

0

是的,你们都是正确的,我犯了一个错误,

很抱歉这个奇怪的帖子,我刚刚意识到我的测试用例不是我提交的那个。

现在我可以按正确的顺序处理事情了。谢谢。

于 2011-07-15T08:50:58.820 回答
0

你的观察似乎有点奇怪。应该首先<a>触发它的 click 事件,然后是<tr>. 如果是这样,事件确实会冒泡,您可以通过停止传播(或返回 false,这将取消默认事件并停止传播)来覆盖冒泡:

$("tr").click(function(e){
    ...
});

$("tr a").click(function(e){
    ...
    return false;
});

工作示例:http: //jsfiddle.net/cFjmc/

于 2011-07-15T08:40:58.197 回答
0

使用event.stopImmediatePropagation

演示-

于 2011-07-15T08:43:10.113 回答