如果最近的td.classname中有一个复选框,请检查它

时间:2012-05-11 04:13:45

标签: jquery checkbox

我有一个预订表单,列出了带有单选按钮的类,用于预订课程。如果类已满,则会在类的单选按钮上显示等待列表复选框。在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>

我在每次'这''最接近''找到'等方面都失败了。也许长度需要参与?

3 个答案:

答案 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")

让我知道是否无效