关于jQuery click()函数的问题

时间:2010-08-16 15:23:57

标签: javascript javascript-events checkbox jquery

    $('document').ready(function(){
        $('[name=mycheckbox]').live('click', function(){
            if($(this).is(':checked'))
            {
                alert('it is checked');
            }
            else
            {
                alert('it is not checked');
            }
        });

        $('[name=mycheckbox]').click();
    });

如果选中该复选框并单击它,警告框会显示“未检查”,但是当页面运行并触发点击事件时(带有复选框)选中),警告框显示“已选中”。为什么?复选框的状态是否不受点击事件的影响?它是否会改变状态?

3 个答案:

答案 0 :(得分:3)

而不是click你应该在这里使用change事件,如下所示:

$('[name=mycheckbox]').live('change', function(){

并使用相同的触发器调用它,如下所示:

$('[name=mycheckbox]').change();

clickchange分开,如果您希望在支票实际完成更改时触发事件,那么您需要change,不是click。或者,如果您想要将其从初始状态切换,请执行以下操作:

$('[name=mycheckbox]').click().change();

答案 1 :(得分:0)

而不是直播活动(我发现它最好是错误的),尝试绑定正常的点击。我已经做了类似的事情,但是.click事件没有.live(“点击”,

我希望有帮助:S

答案 2 :(得分:0)

发生的事情非常微妙。

我有一个按钮和复选框链接到以下代码:

$("#chkbx").click(function() {

    if ($(this).is(':checked')) {
        alert('checked');
    }
    else {
        alert('unchecked');
    }
});

$("#MyButton").click(function() {

    $("#chkbx").click();
});

当我点击复选框时,所有内容都会按照您的预期显示。

当我点击按钮时,反之亦然。

正在发生的事情是,当您单击复选框时,它会在执行代码之前触发默认的单击事件,因此您的代码将从默认点击事件的后果处获取状态。

当你直接在元素上调用click方法时,它实际上是调用你的click函数然后执行默认事件。

我不是这个原因。或者这是故意还是错误。