2

我有一个预订表格,其中列出了带有单选按钮的课程,用于预订课程。如果班级已满,等候名单复选框会出现在班级单选按钮所在的行上。在 jQuery 中,如果单击完整类单选按钮,我希望 jQuery 选中等待列表复选框。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>

我在每一个“这个”、“最近的”、“找到”等方面都失败了。也许需要涉及长度?

4

3 回答 3

2

click活动有效吗?如果不是,我建议:radio选择器:

$class_table.find(":radio").click(function(event) {

如果是,那么下一步是相对于找到的收音机定位您的复选框。您可以简单地parent按照@Imdad 的建议使用(或多次调用父母),或者,closest. 在您的回调中:

$(this).closest('tr').find('.waitlist :checkbox').attr('checked', true);

它将定位父行(无论您的单选按钮嵌套多深),然后在列waitlist搜索带有 class 的复选框。find仅当结果为非空时,最后一次调用才会生效。jsFiddle的工作示例

如果您希望在导航结构时更明确,您可以根据您的 HTML 片段找到正确的列,其中包含 2 次调用parent和 1次调用:siblings

$(this)
   .parent().parent().siblings('.waitlist')
   .find(':checkbox').attr('checked', true);

这里的工作示例应该产生与第一个相同的结果。

注:清理答案,保留正确内容)

于 2012-05-11T04:29:39.103 回答
1

你可以试试

$class_table.find('input.radio:first-child').click(function (event)

查看更多关于 :first-child 访问first-child-selector

于 2012-05-11T04:17:04.367 回答
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")

让我知道是否不起作用

于 2012-05-11T04:21:58.573 回答