我有一个预订表单,列出了带有单选按钮的类,用于预订课程。如果类已满,则会在类的单选按钮上显示等待列表复选框。在jQuery中,如果单击一个完整的类单选按钮,我希望jQuery检查waitlist复选框。 td class =“wailist”将在每一行中,但如果类已满,则复选框将仅在HTML中。 到目前为止我的jQuery -
var $class_table = JQuery('table.courses');
$class_table.find('input.radio').click(function (event)
{
//if this row has a td.waitlist with a checkbox in it then check that box
});
以下是HTML代码段:
<tr class="course_full">
<td class="course_select", colspan=2>
<label>
<input type="radio" name="course[1][1]"
id="course_id_1_9"
value="9"
>
Geometry 2
</label>
</td>
<td class="credit_recovery">
<label>
<input type="checkbox" name="credit_recovery[1][9]"
id="credit_recovery_id_1_9"
>
</label>
</td>
<td class="waitlist">
<label>
<input type="checkbox" name="waitlist[1][9]"
id="waitlist_id_1_9"
>
</label>
</td>
我在每次'这''最接近''找到'等方面都失败了。也许长度需要参与?
答案 0 :(得分:2)
click
活动有效吗?如果不是,我建议使用:radio
选择器:
$class_table.find(":radio").click(function(event) {
如果是,则下一步是找到相对于找到的收音机的复选框。您可以简单地使用parent
作为@Imdad建议(或多次调用父项),或者closest
。在你的回调中:
$(this).closest('tr').find('.waitlist :checkbox').attr('checked', true);
它将找到父行(无论您的单选按钮的嵌套程度如何),然后在类waitlist
的列中搜索 列中的复选框。如果find
的结果非空,则最后一次调用只会产生任何影响。 jsFiddle
如果您希望在导航结构时明确,则可以根据HTML代码段找到正确的列,其中包含2次调用parent
和1次调用siblings
:
$(this)
.parent().parent().siblings('.waitlist')
.find(':checkbox').attr('checked', true);
工作示例here应该产生与第一个相同的结果。
(注意:清理了答案,保留了正确的内容)
答案 1 :(得分:1)
你可以尝试
$class_table.find('input.radio:first-child').click(function (event)
了解更多信息:亲子访问first-child-selector
答案 2 :(得分:1)
试试这个
var $class_table = JQuery('table.courses');
$class_table.find('input.radio').click(function (event)
{
if($(this).parent().hasClass("waitlist"))
{
//DO your thing
}
});
如果单选按钮不是td的直接子项,则可能必须执行.parent()。parent()
您还可以尝试.parent().next(".waitlist") or .parent().prev(".waitlist")
让我知道是否无效