1

我在这里有一个 jQuery 代码:

jQuery(document).ready(function () {
    $("td").click(function (e) {
        var chk = $(this).closest("tr").find("input:checkbox").get(0);

        if (e.target != chk) {
            chk.checked = !chk.checked;
        }

        if ($(this).closest("tr").find("input:checkbox").is(":checked")) {
            $(this).closest("tr").css("font-weight", "bold");
        } else {
            $(this).closest("tr").css("font-weight", "");
        }
    });
});

如您所见,我有很多复选框,然后单击已选中的任何td复选框并添加 css。

它工作正常。我想要的是同样的形式,我也有很多select盒子。
当我尝试选择某些东西时,该功能起作用。
我想禁用单击选择框的功能,因为我想选择不启用复选框。

4

2 回答 2

1

You could just check if the target is a select or anything inside a select element, like options :

$(function () {
    $("td").on('click', function (e) {
        if (! $(e.target).closest('select').length ) {
           var tr  = $(this).closest("tr"),
               chk = tr.find("input[type='checkbox']").get(0);
           if (e.target != chk) {
               chk.checked = !chk.checked;
           }
           if ( tr.find("input[type='checkbox']").is(":checked")) {
               tr.css("font-weight", "bold");
           } else {
               tr.css("font-weight", "");
           }
        }
    });
});
于 2013-03-21T23:17:57.473 回答
0

如果我理解正确,您想测试鼠标单击的内容,如果是 ,则不要更改复选框,对吗?

您应该能够从事件的属性中获得它。例如:

if (!$('#' + e.target.id).hasClass('mySelectBox')){
  //your code...
}

可能有更简洁的方法,我没有测试过,但试试这个:

if (e.target != 'select'){
  //your code..
}

更新:是的,@adeneo 说了什么!

于 2013-03-21T23:50:25.607 回答