如何使用jquery跳过冒泡阶段

时间:2011-07-15 08:24:56

标签: jquery event-bubbling propagation

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

我有一个包含动作链接的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

上升阶段:a tr

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

我尝试过一些事情 e.preventDefault(),e.​​stopPropagation()没有成功。

3 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

答案 2 :(得分:0)

是的,你们都是权利,我犯了一个错误,

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

现在我可以按正确的顺序得到东西。感谢。