jQuery-选择器
如何将onClick操作绑定到除可单击元素之外的行?jQuery-选择器,jquery,html-table,css-selectors,Jquery,Html Table,Css Selectors,如何将onClick操作绑定到除可单击元素之外的行? 例如,我有这样的表格: 。。。 某物 ... 如果我使用这样的代码:$('tbody>tr')。单击(函数(){alert('clicked');})然后当我单击行中的任何内容(包括链接)时,我将执行我的函数。但我希望只有在我单击了不可单击的元素(在我的示例中为“a href”)时才能执行它。利用事件冒泡: $('tbody > tr').click(function(e) { /* do something */ });
例如,我有这样的表格:
。。。
某物
...
如果我使用这样的代码:
$('tbody>tr')。单击(函数(){alert('clicked');})代码>然后当我单击行中的任何内容(包括链接)时,我将执行我的函数。但我希望只有在我单击了不可单击的元素(在我的示例中为“a href”)时才能执行它。利用事件冒泡:
$('tbody > tr').click(function(e) {
/* do something */
});
$('tbody > tr a[href]').click(function(e) {
e.stopPropagation();
});
单击链接时,它将正常工作,但防止单击事件冒泡到tr
,因此在这种情况下不会触发其单击处理程序。利用事件冒泡:
$('tbody > tr').click(function(e) {
/* do something */
});
$('tbody > tr a[href]').click(function(e) {
e.stopPropagation();
});
单击链接时,它将正常工作,但会防止单击事件冒泡到tr
,因此在这种情况下不会触发其单击处理程序。我想您可以向链接本身添加一个:
$('tbody > tr').click(function(){
alert('clicked');
});
$('tbody > tr a').click(function(e){
e.stopPropagation(); // Prevents the `click` to bubble to the tr handler
});
基本上,click
事件默认情况下会在DOM树上“冒泡”(传播)。即,只有tbody>tr
上的click
处理程序,单击tr
将导致这些元素的click
事件(按此顺序):
tr
t车身
表
正文
(html的html
?-不确定)
现在,对事件的.stopPropagation()
调用“防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知。”(),因此将专用处理程序绑定到a
元素将捕获(并停止)单击元素上的事件,但是保持tr
处理程序与以前一样(除了单击a
元素捕获那些以前由tr
处理程序处理的click
事件之外)。我想您可以将a添加到链接本身:
$('tbody > tr').click(function(){
alert('clicked');
});
$('tbody > tr a').click(function(e){
e.stopPropagation(); // Prevents the `click` to bubble to the tr handler
});
基本上,click
事件默认情况下会在DOM树上“冒泡”(传播)。即,只有tbody>tr
上的click
处理程序,单击tr
将导致这些元素的click
事件(按此顺序):
tr
t车身
表
正文
(html的html
?-不确定)
现在,对事件的.stopPropagation()
调用“防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知。”(),因此将专用处理程序绑定到a
元素将捕获(并停止)单击元素上的事件,但是让tr
处理程序保持原样(除了单击a
元素捕获那些click
事件,这些事件以前是由tr
处理程序处理的。)@Chvanikoff是的,它看起来很蹩脚,我知道:)我已经详细阐述了我的答案,以弥补(新的)不足来自以前的信息。@Chvanikoff是的,它看起来很蹩脚,我知道:)我详细阐述了我的答案,以弥补以前(新)信息的不足。