Jquery Trigger复选框:与click事件关联的函数在设置checked属性之前发生

Ste*_*fan 5 javascript checkbox jquery triggers

我正在实现"帐单地址与地址相同"类型功能,当选中复选框时,会根据其他字段填写字段.完美的工作.

click事件的功能..

    if ($(this).attr('checked')) {
        // copy address fields to billing fields
    }
    else{
        // clear fields
    }
Run Code Online (Sandbox Code Playgroud)

现在我使用一个事件(jquery hotkey插件)来自动填充表单中的所有字段,这样我就可以轻松快速地演示和测试表单.而不是作为我想要使用的地址字段欺骗和填写帐单字段

$("#CheckboxForAutofillId").trigger('click'); 
Run Code Online (Sandbox Code Playgroud)

这在我第一次触发事件时不起作用,就像上面调用的函数一样,它会检查checked的属性,但触发器('click')显然在它更改属性之前调用事件.

这对我来说正确地模拟它我必须这样做..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked
$("#CheckboxForAutofillId").trigger('click');           // fires event then 'unchecks'
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks
Run Code Online (Sandbox Code Playgroud)

读取jquery页面的触发器,我没有注意到这提到了,我没有费心去挖掘源代码以查看实际发生了什么,但在我看来,理想情况下触发器事件应该先设置'checked'属性触发事件本身,因为这是更好地模拟检查复选框的人?

我错过了什么吗?

Mo *_*our 8

你应该使用change()而不是click().

$("#CheckboxForAutofillId").change(function()
{
    if(this.checked) ...
});
Run Code Online (Sandbox Code Playgroud)