注意:所有这些都在chrome
上我正在尝试测试响应单击复选框的内容。我意识到jQuery.click()存在,但它似乎与“本机”点击不同,在点击处理程序期间,复选框的状态尚未更新(因此复选框未选中,您调用.click() ,在处理程序中,复选框仍未选中。如果您实际单击该框,则在处理程序中检查状态。)
我为这个令人困惑的问题道歉,这是一个小提琴http://jsfiddle.net/XBhWy/
单击foo按钮,注意按钮处理程序说已经检查过,但是复选框处理程序说它没有被检查(即使ui显示了一个复选标记)。现在,单击复选框本身。请注意,click事件处理程序正在报告您希望它报告的内容。
我的问题是如何模拟实际点击框时发生的事情。
现在,我尝试了一个像这样的更好的模拟事件
$.fn.check = function() {
if ($(this).is(':checked')) {
$(this).attr('checked', 'checked');
} else {
$(this).removeAttr('checked');
}
$(this).click();
}
不幸的是(有点混乱),它没有用。
之前有人碰到过吗?可以完成吗?
请注意,我不是在寻找click
方法。
答案 0 :(得分:1)
来自http://api.jquery.com/trigger/:
尽管.trigger()模拟事件激活,但是使用合成的事件对象,它并不能完美地复制自然发生的事件。
所以我猜这是一个众所周知的事情。在这种情况下,它会改变某些事物的顺序。
答案 1 :(得分:1)
在复选框真正更新之前,复选框click()
事件中声明的用户指定函数似乎会触发。我玩弄它并发现change()
监听器按预期运行。