$('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();
});
如果选中该复选框并单击它,警告框会显示“未检查”,但是当页面运行并触发点击事件时(带有复选框)选中),警告框显示“已选中”。为什么?复选框的状态是否不受点击事件的影响?它是否会改变状态?
答案 0 :(得分:3)
而不是click
你应该在这里使用change
事件,如下所示:
$('[name=mycheckbox]').live('change', function(){
并使用相同的触发器调用它,如下所示:
$('[name=mycheckbox]').change();
click
与change
分开,如果您希望在支票实际完成更改时触发事件,那么您需要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函数然后执行默认事件。
我不是这个原因。或者这是故意还是错误。