用于行选择的简单jQuery复选框代码

时间:2009-12-25 21:31:59

标签: jquery

此代码旨在执行以下简单任务:

a)选中表格<tr>行中的复选框。

b)将“selected”类添加到<tr>行。

虽然B没有问题,但是我不能让它做A.我已经尝试过各种类型的jQuery选择器,包括输入[name ='checked_136'],'input.action_items'等,我就是不能得到它标记为已选中。我也尝试过使用过的东西attr('checked',true)来检查它,但这并没有什么区别。

有没有人有一些见解?

$('table.dataset tbody tr').click(function () {
    var this_row = $(this);
    var checkbox = $(this).children('input.action_items');

    if (checkbox) {
        this_row.children(':checkbox').trigger('click');
        this_row.addClass('selected');
    }
});

2 个答案:

答案 0 :(得分:2)

使用.children()只能获得直接的孩子(在这种情况下为td),因此可能找不到复选框。

尝试将其切换为。find()

$('table.dataset tbody tr').click(function () {
    var this_row = $(this);
    var checkbox = this_row.find('input.action_items');

    if (checkbox.length > 0) {
        checkbox.attr('checked', true);
        this_row.addClass('selected');
    }
});

答案 1 :(得分:0)

我会反过来 - 点击复选框触发事件:

$('table.dataset tbody tr :checkbox').click(function() {
    $(this).closest('tr').addClass('selected');
});

这样,您就不必触发click事件。此外,如果您使用AJAX获取表,请不要忘记将其包含在$(function() { ... });中并使用.live('click', ...)而不是.click(...)

<强>更新
由于原始答案是撰写的,因此.live()deprectated并由.on()取代。