Javascript 关于jQuery click()函数的问题

Javascript 关于jQuery click()函数的问题,javascript,jquery,checkbox,jquery-events,Javascript,Jquery,Checkbox,Jquery Events,如果选中复选框并单击它,则警告框会显示“未选中”,但当页面运行并触发单击事件时(选中复选框时),警告框会显示“已选中”。为什么?复选框的状态是否不受单击事件的影响?是鼠标向下移动改变了状态吗?你应该在这里使用change事件,而不是click,如下所示: $('document').ready(function(){ $('[name=mycheckbox]').live('click', function(){ if($(this).is(':c

如果选中复选框并单击它,则警告框会显示“未选中”,但当页面运行并触发单击事件时(选中复选框时),警告框会显示“已选中”。为什么?复选框的状态是否不受单击事件的影响?是鼠标向下移动改变了状态吗?

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

    $('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();
    });
$('[name=mycheckbox]').live('change', function(){
并使用相同的触发器调用它,如下所示:

    $('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();
    });
$('[name=mycheckbox]').live('change', function(){
单击
更改
是分开的,如果您希望在检查实际完成更改时触发事件,则您希望
更改
,而不是
单击
。或者,如果仍要将其从初始状态切换,请执行以下操作:

$('[name=mycheckbox]').change();
尝试绑定一个普通的点击,而不是实时事件(我发现它最多也有bug)。我做过类似的事情,它可以很好地处理.click事件而不是.live(“click”


我希望这能有所帮助:发生的事情非常微妙

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

$('[name=mycheckbox]').click().change();
当我单击复选框时,所有内容都会按预期显示

当我点击按钮时,情况正好相反

发生的情况是,当您单击复选框时,它将在执行代码之前触发默认的单击事件,因此您的代码将从默认的单击事件之后获得状态

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


我不知道为什么会这样。或者如果这是故意的,或者是一个bug。

这根本不是问题。在复选框上,单击“在更改之前发生”。@Jamiec-他对
live()
的担忧是什么。
live()
真的有bug吗(除了主要问题之外)?对我来说,jamiec,它工作得很好,所以我不认为是这样。关于我所说的live…这是一些愚蠢的事情,比如右键和左键点击触发它,它似乎是在鼠标按下而不是完全点击时触发的。我在猜测,但这是根据经验得出的。