我有 HTML表格。它显示数据库中的数据。 7列。(其中一个是复选框)
桌子外面有一个按钮。 删除用户按钮最初被禁用。
<a id="deleteuser" class="btn btn-danger btn-sm disabled" ><i class="fa fa-trash-o"></i> Delete users</a>
单击复选框时会启用它。 我的复选框:
<input type="checkbox" name="chk" id="chk>
启用/禁用按钮的jQuery :
$(function(){
var button=$('#deleteuser');
button.attr('disabled','disabled');
$('#chk').change(function(e){
if(this.checked){
button.removeAttr('disabled');
} else {
button.attr('disabled','disabled');
}
});
});
直到现在都很好。现在我要为这个表添加一个功能。单击任何行时,该行的内容必须重定向到另一个页面,以便我可以修改该数据。
要点击表格,我使用了 CSS :
<style>
table, table tr, table tr td { cursor: pointer;}
</style>
要编辑特定行,我会将该行的内容(基于用户ID)重定向到另一个页面。我用的脚本:
$(document).ready(function(){
$('table.table tr').click(function () {
window.location='edituserdata.php'
});
});
----------问题--------------
现在,当我点击一行时,我会被重定向到edituserdata.php(即使我点击了一个复选框)。我想在我点击复选框时启用删除用户按钮,当我点击该行中的任何其他列时重定向到其他页面。我在某个地方出错......无法理解。 有人帮忙???两者都有效,但不能同时发挥作用。
的jsfiddle:
答案 0 :(得分:0)
您可以通过检查目标nodeName来检查行的目标单击事件 如果它是锚,则防止进一步的任务。你也可以勾选复选框。
$('table.table tr').click(function (ev) {
if(ev.target.nodeName.toLowerCase() == "a") return;
if(ev.target.nodeName.toLowerCase() == "input")return;
});
我相信您也可以使用is
来检查元素。
$('table.table tr').click(function (ev) {
if($(ev.target).is("a")) return;
if($(ev.target).is("input[type=checkbox]"))return;
});