IE7更改事件未被触发

难道我做错了什么? 为什么click事件不会在第一个keydown上注册?

http://jsfiddle.net/vol7ron/VJ5CX/

在这个例子中,

  1. 单击“菜单”以确保它具有焦点
  2. 使用箭头键(向上/向下)突出显示一个选项
  3. 使用空格键选择选项

注意没有调用change()事件。 再次使用空格键选择相同的选项,并注意它正常工作。


我试过了:

  • 根据这个问题使用模糊/焦点,但没有任何运气
  • 将checked属性设置为false,以确保触发更改事件

有趣的发现:

  • 使用鼠标时没有问题(它会在第一次触发更改事件,如预期的那样)
  • 即使在使用鼠标选择(运行,单击选项,将鼠标hover在选项并使用键盘)后,仍会出现keydown问题。

预期成绩:

  • 使用键盘导航(向上/向下箭头)并使用空格键选择,应触发“keydown”和“click”日志。 它不适用于初始keydown,但每次都会执行。 (查看Firefox的工作示例)

我在初始加载时使用模糊/焦点。 显然我需要在keydown事件中进行模糊/聚焦:

 if (e.keyCode == 13 || e.keyCode == 32) { var cb = container.find('label.x-hover input:checkbox'); cb.blur(); // <-- added cb.focus(); // <-- added cb.click(); updateLog('keydown'); oTitle.focus(); return false; } 

试试这个。 它也发生在我身上。 但我试过这个,它有所帮助。 我不确定这是否有效。

 container .find('input[type="checkbox"]') .change(function(){ var cb = $(this); var sClass = "checked"; if (cb.prop(sClass)) { cb.parent('label').addClass(sClass); } else { cb.parent('label').removeClass(sClass); } updateLog('click'); oTitle.focus(); }) 

;