jquery,复选框选择所有不启用其他复选框上的事件

时间:2010-12-03 21:10:38

标签: jquery html

我有一个全选复选框。

<br>DK Filtering :
    <input type="checkbox" name="asdf" id="asdf" value="A" CHECKED>A
    <input type="checkbox" name="asdf" id="asdf" value="B">B
    <input type="checkbox" name="asdf" id="asdf" value="C_EVAL">CEval
    <input type="checkbox" name="asdf" id="asdf" value="D_EVAL">DEval
    <input type="checkbox" name="dkfilterall" id="dkfilterall" value="YES">Select All
<br>
    <script>
    \$("input[name=dkfilterall]").click(function() {
       if (\$('input[name=dkfilterall]').is(':checked')== true)
       {
            \$('input[name=asdf]').attr('checked', true);
       }
       if (\$('input[name=dkfilterall]').is(':checked')== false)
       {
            \$('input[name=asdf]').attr('checked', false);
       }
    });            
    </script>

稍后,我有这个功能:

<script>
        \$("input[name=asdf]").live(function() {

...
</script>

我认为通过选择全部复选框检查各个复选框的操作会触发各个复选框的功能,但这不会发生。

我需要做些什么来纠正这个问题?

感谢 戈登

4 个答案:

答案 0 :(得分:2)

勾选这些复选框后,您需要调用相应的.change()函数来触发它们:

$('input[name=asdf]').attr('checked', true).change();

这是一个(简化的)working example,它会检查所有框,然后调用它们的change()函数。

答案 1 :(得分:1)

您必须为实时指定事件类型,因此.live('click', function() {});

答案 2 :(得分:0)

因为您正在检查是否已选中复选框,所以您只需调用它们上的click事件即可触发这些功能。即。

$("input[name=dkfilterall]").click(function() {
       if ($('input[name=dkfilterall]').is(':checked')== true)
       {
            $('input[name=asdf]').click();
       }
       if ($('input[name=dkfilterall]').is(':checked')== false)
       {
            $('input[name=asdf]').click();
       }
    });     

答案 3 :(得分:0)

  1. 如果要在手动选中复选框后触发某些事件(单击,更改),则必须向对象调用trigger方法:

    $('input[name=asdf]').attr('checked', true)
       .trigger("change"); // <-- this code added
    
  2. 在您的示例中,您尝试使用live方法,该方法用于绑定静态和动态创建元素的触发器。要正确使用它,代码必须是这样的:

    $("input[name=asdf]").live("click", function() {
       // Live handler called.
    });
    
  3. 查看有关official jquery site的更多信息。