0

我正在尝试将功能应用于页面上显示/隐藏的每个复选框,<div class="selectlist">具体取决于复选框是否被选中,此功能使<div class="selectlist">页面上的所有内容切换

$("input[type=checkbox]").live('change', function() {
  if ($(this).is(':checked') == false) {
   $('#selectlist').hide();
    } else {
       $('#selectlist').show();
    }
 });     

我尝试了这样的jqueryeach函数,但这似乎不起作用

    $.each($("input[type=checkbox]").live('change', function() {

        if ($(this).is(':checked') == false) {
             $('#selectlist').hide();
        } else {
             $('#selectlist').show();
        }
    }));

我知道可以通过使用 aclass而不是,input[type=checkbox]但我想避免这样做

如何让 jquery 更改用户单击的复选框的行为?

4

2 回答 2

2

如果您尝试将事件处理程序绑定到所有正在验证的元素input[type=checkbox],只需执行

$(document).on('change', "input[type=checkbox]", function() {
    if (!this.checked) {
         $('#selectlist').hide();
    } else {
         $('#selectlist').show();
    }
});

不需要在each那里使用:如果 jQuery 集合包含多个元素,则大多数 jQuery 函数都可以工作。

请注意,我使用on那里而不是live: 在已弃用很长时间后,live已从最新版本的 jQuery 中删除。


编辑:下面评论中的讨论导致此代码:

$(document).on('change', "input[type=checkbox]", function() {
    $(this).next().toggle(this.checked);
});
于 2013-04-05T14:34:07.840 回答
1
$(document).on('change', 'input[type=checkbox]', function() {
    $('#selectlist').toggle(this.checked); 
});

ID 是 uniqe,并且没有“<div id="selectlist">页面上的所有切换”,只能有一个?改用一个类,向我们展示标记的样子!

于 2013-04-05T14:34:31.693 回答