此代码旨在执行以下简单任务:
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');
}
});
答案 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()
取代。