2013-03-27 30 views
1
$(function() { 
    $('.checkbox').change(function() { 
    if ($('.checkbox').prop("checked")) { 
     alert('checked'); 
     if ($('#print').length == 0) { 
      $('#post').append('<input type="button" id="print" value="Print">'); 
     } 
    } else { 
     alert('unchecked'); 
     if ($('#print').length != 0) { 
      $('#print').remove(); 
     } 
    } 
    }); 
}); 

随着上面的例子,当我检查第一复选框它触发了alert('checked');当我取消,它触发了alert('unchecked');。按预期工作。.prop(“选中”)仅选择第一元件

但是,如果选中该复选框,则除第一个(第二个,第三个...复选框等)以外的任何其他元素始终返回False,从$('.checkbox').prop("checked")

我怎样才能使它监控所有的复选框?

+0

是缺少'$('。复选框)中的单引号'只是一个错字或是在代码中? – Mottie 2013-03-27 21:44:30

+0

只是一个类型,当适应的代码为stackoverflow社区。固定。感谢您发现! – Skylight 2013-03-28 12:41:41

回答

4

$('.checkbox')不会给你复选框的状态,因为类选择器不返回单个元素。

使用:$('.checkbox').eq(0).prop("checked")获取第一个,或使用.each()访问循环中的结果列表。

$('.checkbox').each(function() { 
    if($(this).prop("checked")) { 
     alert("checked!"); 
    } 
}) 
1

这将选择与类网页上复选框所有的所有元素:

if ($('.checkbox').prop("checked")) { 

然而,这将选择从该事件被触发的元素:

if ($(this).prop("checked")) {