我将jQuery on()
应用于每个表行。用户点击任何一行后,另一个页面开始加载:
table_tag.on("click", "tbody tr", function(event) {
var search_id = datatable.fnGetData(this)[0];
if(event.ctrlKey) {
window.open("/search/"+search_id+"/");
} else {
window.location.assign("/search/"+search_id+"/");
}
});
我在表格中添加了一个新列。它的每个单元格只有一个复选框:
<td><input type="checkbox" /></td>
我需要在用户点击此复选框后阻止加载其他页面。 我试过这个:
table_tag.off("click", "tbody tr td input:parent")
但它不起作用。我怎么能这样做?
答案 0 :(得分:2)
您在"tbody tr td input:parent"
上没有处理程序。您在"tbody tr"
上只有一个处理程序。
相反,要更加小心你绑定的内容:"tbody tr :not(input:checkbox)"
应该更好。
EDIT2:结果丢失时出错; not(...)
不正确,应为:not(...)
。
EDIT-too-much:Fiddle,tbody tr td:not(:has(input:checkbox))
。
答案 1 :(得分:0)
目前您正在尝试从td中删除点击事件,但您已将其应用于tr。
你想要达到的目标是模棱两可的。您要么只尝试做一次,在这种情况下使用one()
table_tag.one("click", "tbody tr", function(event) { ...
或者您不希望单击复选框冒泡并触发tr
上的单击table_tag.on("click", "tbody tr", function(event) {
if (this.target!=event) return; // will ONLY catch the tr being clicked
...
或其他