嵌套表,如何停止jquery事件触发IE9

嵌套表,如何停止jquery事件触发IE9,jquery,internet-explorer,javascript-events,Jquery,Internet Explorer,Javascript Events,假设我有一个嵌套表,如下所示: <table id="search"> <tbody> <tr><td>a</td></tr> <tr><td>b</td></tr> <tr><td> <table> <tr id="ex"><td>-----------&

假设我有一个嵌套表,如下所示:

<table id="search">
<tbody>
    <tr><td>a</td></tr>
    <tr><td>b</td></tr>  
   <tr><td>
       <table>
           <tr id="ex"><td>-----------</td></tr>           
        </table>
       </td>
   </tr>
       </tbody>
单击最后一行时,这会导致两个警报-首先是一个包含索引0,然后是一个包含索引2

尝试#1)

这不起作用-我不再收到包含0索引的警报,但我仍然收到包含索引2的警报-这向我表明一定有什么东西正在冒泡到父级(对吗?)

event.stopPropagation()似乎没有帮助- 尝试#2)

这使我得到一个索引为2的警报

尝试#3+)

我尝试了preventDefault()、stopBubble、StopRopogation等多种不同的组合,但似乎没有什么能阻止我获得索引2的警报

我意识到这可能有一个简单的答案,但请与我分享,如果你知道

最终编辑:这与事件传播无关,只是因为我忽略了一个事实,即包含嵌套表的行本身正在将事件绑定到它,以及嵌套表中的行。

编辑:更新的代码-

$('#search tr').click(function (event) {
    event.stopPropagation();
    if ( this.id != "ex" ) {
        alert($(this).closest("tr").index());
    }
});
(我还确保您的内桌已关闭)

只需使用

$("#search > tbody > tr:not(:has('table'))").click(function() {
    alert($(this).closest("tr").index());
});

您仍然会得到索引2,OP似乎不会返回该索引。这仍然会导致在单击最后一行时触发警报-我应该补充说我确实尝试过。我回答说,因为这一行“我想将单击事件绑定到嵌套表中不存在的行”我真的不明白他是想要0还是#search table的tr索引,所以警报必须只在第一行和第二行?没错,很抱歉我的操作不够清晰。感谢您发现结束标记错误:)我仍然收到带有此代码的“0”警报。我在OP中添加了一个说明,我不希望在单击排除的行时发生任何事情。
$("#search tr").not("#ex").click(function(event) {
event.stopPropagation();   
alert($(this).closest("tr").index());    
});
$('#search tr').click(function (event) {
    event.stopPropagation();
    if ( this.id != "ex" ) {
        alert($(this).closest("tr").index());
    }
});
$("#search > tbody > tr:not(:has('table'))").click(function() {
    alert($(this).closest("tr").index());
});