-1

对于下面的代码示例,在选中 courseID 复选框时,我需要选中或取消选中 courseGroup 复选框。td 根据更高层的另一个查询在页面上重复。

我尝试使用:

$('.checkedCourse').click(function() {
  if ($(this).closest("td").find('.checkGroup').prop('checked') == true && this.checked == false)
  $(this).closest("td").find('.checkGroup').prop('checked', false); ...

但它会取消选中页面上的所有 courseGroup 复选框,而不仅仅是该组的复选框。

我也尝试过$(this).parents('div:eq(0)'),但我不知道如何回到多个prev()div。

<td colspan="7">
    <cfoutput query="courseData">
        <div name="div1">
            <input type="checkbox" name="courseGroup" class="checkGroup">
            <div class="courseBreak"></div>
            <div class="courseLine">
                <div class="courseSection">#courseSections#</div>
                <div class="courseTitle">#courseTitle#</div>
                <div>
                    <input type="checkbox" class="checkedCourse" name="courseID" id="courseID" value="#courseId#">
                </div>
            </div>
        </div>
    </cfoutput>
</td>

这是呈现的 HTML: 呈现的 HTML

当我取消选中该组中的课程时,我需要取消选中粗体组(例如 AMBI 12-13 Sum)

4

4 回答 4

1

由于您的复选框在相同的范围内td,因此您无法使用它来查找匹配的复选框。但是,您可以使用div这是一个共同的父级。

$(this).closest(".courseLine").closest("div").find('.checkGroup')

我建议在该外部放置一个类,div以避免 2 次调用closest.

于 2013-04-01T15:30:55.233 回答
0

你可以这样做:

if ($(this).closest(".courseLine").prevAll('.checkGroup:first').prop('checked') == true && this.checked == false)
   $(this).closest(".courseLine").prevAll('.checkGroup:first').prop('checked', false);
于 2013-04-01T15:27:11.377 回答
0

确保您的 ID 是唯一的,然后尝试以下操作:

$('.checkedCourse').click(function () {
    $(this).closest('div[name=div1]').find('.checkGroup').prop('checked', !$(this).is(':checked'));
});

jsFiddle 示例

于 2013-04-01T15:33:11.410 回答
0

感谢大家,您告诉我的组合有效!

if ($(this).closest('div[name=courseGrouping]').find('.checkGroup').prop('checked') == true && this.checked == false)
                $(this).closest('div[name=courseGrouping]').find('.checkGroup').prop('checked', false);

现在我只需要弄清楚如何在下面的表单上检查所有内容时检查顶部的复选框,我确定我只需要循环或其他东西。

于 2013-04-01T16:17:24.713 回答