繁体   English   中英

选择子复选框时如何定位此特定父复选框

[英]How to target this specific parent's checkbox when child checkbox is selected

我在针对此复选框父母的复选框时遇到问题。 无论何时选择子级,我都需要自动选中父级复选框。 这是我的HTML。 有一件事是轻微的问题是,父母的div我需要选择具有相同的类为一出,立即在层次较高,这是.checkbox

<ul class="term-reference">
    <li>
        <div class="checkbox"> 
            <label class="control-label">
                <input type="checkbox" class="form-checkbox">Parent Label
            </label>
        </div>
        <ul class="term-reference">
            <li>
                <div class="checkbox">
                    <label class="control-label"">
                        <input type="checkbox" class="form-checkbox">Child Label
                    </label>
                </div>
            </li>
        </ul>
    </li>
</ul>

我尝试了以下方法,但无济于事,非常感谢您的帮助

$('ul.term-reference li ul li input.form-checkbox').click(function() {
    $(this).closest('.checkbox').closest('.checkbox').find('input.form-checkbox').prop('checked', true);
});

你可以和parent尝试

$(this).parent().closest('.checkbox').find('input.form-checkbox').prop('checked', true);

上层的复选框类不是祖先,因此您需要向上两个最接近的li元素,然后是子复选框类,然后找到input[type="checkbox"]

虽然我在这里阅读的答案很可能会起作用,但它们似乎与html紧密相关(这意味着如果您更改html,则jQuery可能无法正常工作)并且不可重用(并可能导致其他复选框(即使不应选中)。

我建议阅读“将HTML,CSS和JavaScript分离”-Philip Walton @ Google

对您的html和可重用的jQuery进行少量更新:

  $(document).ready(function(){ $('.checkbox-container .checkbox-child').on('click', function() { var $childCheckbox = $(this); if ($childCheckbox.is(":checked")){ $childCheckbox .closest('.checkbox-container') .find('.checkbox-parent') .prop("checked", true); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="term-reference checkbox-container"> <li> <div class="checkbox"> <label class="control-label"> <input type="checkbox" class="form-checkbox checkbox-parent">Parent Label </label> </div> <ul class="term-reference"> <li> <div class="checkbox"> <label class="control-label""> <input type="checkbox" class="form-checkbox checkbox-child">Child Label </label> </div> </li> <li> <div class="checkbox"> <label class="control-label""> <input type="checkbox" class="form-checkbox checkbox-child">Child Label </label> </div> </li> <li> <div class="checkbox"> <label class="control-label""> <input type="checkbox" class="form-checkbox checkbox-child">Child Label </label> </div> </li> </ul> </li> </ul> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM