在新版本中,jQuery .change事件是由.click触发的吗?

问题描述

| 我当前正在升级应用程序以使用jQuery 1.6.1(以前使用1.4.4),并发现现在Now0ѭ事件也自动触发a1ѭ事件。 我在这里创建了一个简单的示例:http://jsfiddle.net/wDKPN/ 请注意,如果包含1.4.4,则触发“ 0”事件时,“ 1”功能将不会触发。但是当切换到1.6时,触发
.click()
会触发
.change()
事件。 两个问题: 这是一个错误吗?似乎以编程方式触发“ 0”也不应触发其他事件(例如,自动触发“ 7”和“ 8”以帮助“模仿”用户的点击似乎是错误的)。 我绑定to9ѭ事件然后触发该元素的
click()
change()
事件的正确方法是什么?我是否简单地叫
.click()
,并依靠rely1ѭ也会触发的事实?
$(\'#myelement\').change(function() {
     // do some stuff
});

$(\'#myelement\').click(); // both click and change will fire,yay!
在我的旧代码中,我使用此模式在ajax调用后初始化一些复选框(及其检查的状态和值):
    $(\'#myelement\').change(function() {
         // do some stuff including ajax work
    }).click().change();
但是在1.6.1中,我的逻辑触发了两次(一次对
.click()
,一次对
.change()
)。我可以依靠删除
.change()
触发器,并希望jQuery在将来的版本中继续以这种方式运行吗?     

解决方法

        最好的方法是:
$(\'#myelement\').bind(\'initCheckboxes change\',function() {
     // do some stuff including ajax work
}).trigger(\'initCheckboxes\');
要进行初始化工作,您只需将其绑定到一个自定义事件,该事件将在页面首次加载时触发它。这样,任何版本的任何人都无法摆脱。 我相信
change
事件将继续存在于所有版本中,因为它已经存在了很长时间,而且这样做的效果很好。 最后,这是个快乐的结局故事,因为自定义事件
initCheckboxes
在页面加载时仅触发一次,而
change
事件将始终在更改状态监听并触发。     ,        我会说这是jQuery 1.4.4中的错误。删除jQuery事件处理程序并使用标准ѭ23会产生与jquery 1.6.1相同的结果。 http://jsfiddle.net/jruddell/wDKPN/26/
window.count = 0;

document.getElementById(\'mycheckbox\').addEventListener(\'change\',function() {
    window.count++;
    jQuery(\'#output\').append(\'I fired: \' + window.count + \' times<br />\');
});

document.getElementById(\'mycheckbox\').click();
另外,我将使用ѭ25来专门调用jQuery事件处理程序。如果要事件模型确定要调用的处理程序,请使用
click
change
等。     ,        忘记复选框的单击事件。更改事件处理所有事情。
$(\'#myelement\').change(function() {
    // do some stuff
});
$(\'#myelement\').trigger(\'change\');
自己看看:http://jsfiddle.net/zupa/UcwdT/ (此演示设置为jQuery 1.8,但也适用于1.6。)     ,        我认为您可以通过将change()放在点击处理程序中,然后触发点击,使其对jQuery 1.4.4和1.6的实现均有效。
$(\'.myelement\').click(function(){
 $(\'.myelement\').change();   
 alert($(this).val());
});
$(\'.myelement\').trigger(\'click\');
看看那里的简单例子。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...