将实时事件添加到行后,复选框选择不起作用

时间:2014-06-10 07:26:48

标签: javascript jquery checkbox javascript-events event-handling

enter image description here

我想选中该行的复选框,所以我为行添加了“live”事件,然后点击我选择使用jQuery的复选框。现在当我点击行时,它会选中复选框。

问题是,当我点击复选框时,复选框没有被选为复选框直播活动。

我们怎样才能同时切换行或复选框,切换复选框值?

我添加了以下代码,以选中点击行的复选框:

$('#manage-ads-grid table tbody tr').live('click', function () {
    var checkboxId = $(this).find('input:checkbox').attr('id');
        $("#" + checkboxId).prop("checked", !$("#" + checkboxId).prop("checked"));
        return false;
    })

如果是,我可以使用事件冒泡吗?

2 个答案:

答案 0 :(得分:1)

您需要使用以下jQuery停止将click事件从复选框传播到其父tr:

$('input[type=checkbox]').click(function(e){
    e.stopPropagation();
});

注意:根据您的代码修改复选框选择器。这可能就像

$('#manage-ads-grid table tbody tr td input[type=checkbox]').click ...

<强> DEMO

答案 1 :(得分:1)

在函数中添加条件检查,如果事件源是INPUT,则不执行任何操作。

$('#manage-ads-grid table tbody tr').live('click', function (event) {
if (event.target.nodeName === 'INPUT') return;
var checkboxId = $(this).find('input:checkbox').attr('id');
    $("#" + checkboxId).prop("checked", !$("#" + checkboxId).prop("checked"));
    return false;
})

在这里演示:http://jsfiddle.net/KVfB5/