Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-防止嵌套事件_Javascript_Html_Events - Fatal编程技术网

Javascript-防止嵌套事件

Javascript-防止嵌套事件,javascript,html,events,Javascript,Html,Events,我的HTML中有以下结构: <tr id="151_movie" onclick="display_details(this);"> <td name="td_btn"><button id="151_btn_row_remove" name="btn_row_remove" type="button"></button></td> <td>New Item just added</td> <td>B

我的HTML中有以下结构:

<tr id="151_movie" onclick="display_details(this);">
<td name="td_btn"><button id="151_btn_row_remove" name="btn_row_remove" type="button"></button></td>
<td>New Item just added</td>
<td>Blah</td>
<td>Blah</td>
<td>Blah</td>
<td>
<input type="text" id="151_file_video" name="meta_input" placeholder="Enter Filename" value="">
</td>
</tr>

刚刚添加的新项目
废话
废话
废话
我正在为我的tr和btn_row_remove分配事件句柄。显然,tr内的tds将具有与tr相同的事件处理程序。我希望我的tds不具有与行相同的事件处理程序,而是按钮(td内)具有自己的事件。 我尝试了以下操作,但这将禁用按钮事件处理程序

var td_btns = document.getElementsByName('td_btn');
    for (var i=0; i < td_btns.length; i++) {
      td_btns[i].addEventListener('click', function(e) {
        //e.preventDefault();
        e.stopPropagation();
            }, true);
    };
var td_btns=document.getElementsByName('td_btn');
对于(变量i=0;i
这是td内按钮的事件处理程序:

var btns_row_remove = document.getElementsByName('btn_row_remove');    
for (var i=0; i < btns_row_remove.length; i++) {
          btns_row_remove[i].addEventListener('click', function(e) {
            e.stopPropagation(); //-> disables the row's event
            confirm_delete(this);
                }, true);
        };
var btns_row_remove=document.getElementsByName('btn_row_remove');
对于(变量i=0;i禁用行的事件
确认并删除(此项);
},对);
};

我如何能为父元素(tr)和孙子元素(button)创建事件,而不为中间子元素(td)?

我了解到,将false传递给addEventListener可以解决我的问题:

var btns_row_remove = document.getElementsByName('btn_row_remove');    
for (var i=0; i < btns_row_remove.length; i++) {
          btns_row_remove[i].addEventListener('click', function(e) {
            e.stopPropagation(); //-> disables the row's event
            confirm_delete(this);
                }, fasle); // -> disables event capturing ...
        };
var btns_row_remove=document.getElementsByName('btn_row_remove');
对于(变量i=0;i禁用行的事件
确认并删除(此项);
},fasle);//->禁用事件捕获。。。
};
if(e.target.tagName==“TD”){return true;}