无法触发复选框更改

时间:2013-07-10 08:25:00

标签: javascript jquery events javascript-events jquery-selectors

我正在使用jQuery 1.8.3。我想触发每个复选框状态更改。

当我把它放在click事件中时,这段代码正常工作:

$("#btn_off").click(function(){
   $( "tr td input" ).each(function( index ) 
   {
    if ($(this).is(":checked"))
    {
       //some code
    }
   });
});

但是当我使用这段代码时,它不是:

$('tr td input').live('change', function(){ 
    if(this.checked)
    {
       //something
    }
});

然后我尝试过:

$('tr td input').on('change', function(){ 
    if(this.checked)
    {
       //something
    }
});

以及以下内容:

$('tr td :checkbox').change(function() { 
    if(this.checked)
    {
       //something
    }
});

我做错了什么?此代码位于.ready() 这是网站上唯一的复选框,所以我确信selector应该有效...

5 个答案:

答案 0 :(得分:0)

您可以使用click事件:

$('tr td input').on("click", function() {
    if ($(this).is(':checked')) {

    }
});

答案 1 :(得分:0)

试试这个,你必须使用$(this).is(':checked')而不是this.checked

HTML

<table>
    <tr>
        <td><input type="checkbox"/> </td>
    </tr>
    <tr>
        <td><input type="checkbox"/> </td>
    </tr>
    <tr>
        <td><input type="checkbox"/> </td>
    </tr>
</table>

JS

$(document).ready(function() {
    $('tr td input[type="checkbox"]').on('change', function(){
        if($(this).is(':checked'))
            alert('checked');
        else
            alert('not checked');
    });
});

小提琴:http://jsfiddle.net/nuxbox/vxyHq/

答案 2 :(得分:0)

这有用吗?:http://jsfiddle.net/msapD/3/

$(document).ready(function(){
    $('tr td input').change(function() { 
        if(this.checked)
        {
           alert("Checked");
        }
    });
});

答案 3 :(得分:0)

$(document).ready(function(){
    $('body').delegate('td input:checkbox','click',function() { 
        if($(this).is(':checked'))
        {
           alert("Checked");
        }
    });
});

答案 4 :(得分:0)

您需要检查已检查的属性

$('input').on('change',function(){
    if($(this).prop('checked'))
        alert('checked');
    else
        alert('unchecked');
});

选中此demo