如何在Jquery中选中复选框时收听


74

我需要知道何时选中页面上的任何复选框:

例如

<input type="checkbox">

我在jQuery中尝试过

$('input type=["checkbox"]').change(function(){
alert('changed');
});

但这没用,有什么主意吗?


问题是这$('input type=["checkbox"]')不是有效的选择器。应该$('input[type=checkbox]')改为。甚至会更好$('input:checkbox')。;)
CptRobby 2013年

Answers:


128

使用change()事件和is()测试:

$('input:checkbox').change(
    function(){
        if ($(this).is(':checked')) {
            alert('checked');
        }
    });

我将以上内容更新为以下内容,因为我愚蠢地依赖jQuery(位于中if),而DOM属性同样合适,并且使用起来也更便宜。为了使选择器能够在支持它的那些浏览器中传递给DOM的document.querySelectorAll()方法,还对其进行了更改:

$('input[type=checkbox]').change(
    function(){
        if (this.checked) {
            alert('checked');
        }
    });

为了完善起见,在普通的JavaScript中也可以轻松实现相同的操作:

var checkboxes = document.querySelectorAll('input[type=checkbox]'),
    checkboxArray = Array.from( checkboxes );

function confirmCheck() {
  if (this.checked) {
    alert('checked');
  }
}

checkboxArray.forEach(function(checkbox) {
  checkbox.addEventListener('change', confirmCheck);
});

参考文献:


您可以保证更改事件仅在检查状态更改时触发,而不会在可见性等其他事件上触发吗?
committedandroider

@committedandroider:“ [我可以保证...吗? ”-不,但是我肯定会说,除了与复选框或其关联<label>元素进行用户交互外,我从未发生过更改事件触发(除非出于某种原因我以编程方式触发了更改事件)。
大卫说恢复莫妮卡

22
$('input:checkbox').live('change', function(){
    if($(this).is(':checked')){
        alert('checked');
    } else {
        alert('un-checked');
    }
});

jsfiddle:http : //jsfiddle.net/7Zg3x/1/


1
为什么.live呢 为什么不.click呢?

9
由于我不知道如何/何时将输入元素添加到dom中,因此即使发生元素的动态注入,使用.live()进行示例也有助于它们变得相关。在一般意义上,.live()将应用于元素“现在和将来”(如文档所述),而.click()是.bind('click',function(){})的快捷方式,仅适用于dom中已存在的元素。
贾斯珀

1
@Jasper:live比正常绑定慢得多,因为该事件应该冒泡。change如果元素是静态元素,则直接使用绑定到元素的事件更有意义。
Shef 2011年

7
从jQuery 1.7开始,您将要使用.on()代替.bind()或.live()。此处的更多信息:api.jquery.com/on
JD Smith,

4
根据jQuery docs.live()从1.9起已完全删除。
JD史密斯


3

尝试这个

$('input:checkbox').change(function(){
   if(this.checked)
      alert('checked');
   else
      alert('not checked');
});

2

如果您想使用.on这个作品

 jQuery('input[type=checkbox]').on('change', function() {
   if (this.checked) {
     console.log('checked');
   }
 });


0
$("input[type='checkbox']").click(function(){
    alert("checked"); 
});

只要正常.click就行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.