【问题标题】:Odd problem with jQuery .change() eventjQuery .change() 事件的奇怪问题
【发布时间】:2011-05-25 13:27:37
【问题描述】:

我有以下带有 onchange 事件的选择元素。

<select name="ftest" onchange="alert('test');">
  <option value="0"></option>
  <option value="test">test</option>
</select>

我稍后使用 jQuery (1.4.4) 在页面中的所有选择元素上绑定另一个事件。

   $("SELECT").change(function(){
    _isDirty = true;
   });

结果是,当我更改选择列表的值时,我的警报会显示两次。

有人知道为什么会发生这种情况或有办法解决这个问题吗?

谢谢

【问题讨论】:

  • 不确定您在做什么,但它在 Chrome、Firefox 和 Safari(最新版本,Mac OS X 10.6)中完美运行:jsfiddle.net/HSdBf/1。所以我认为它与您代码中的其他内容有关。也许你在某个地方打电话给$(something).change(),或者这是一个IE问题(真令人惊讶)。
  • 你是说将处理程序与 jQuery 绑定的行为会导致内联处理程序被调用两次吗?
  • 是的,当我用 jQuery 绑定处理程序时出现问题,是的,我使用的是 IE8。
  • 你为什么使用 jQuery 库并编写内联 javascript?你需要从不再次ever ever内联编写javascript。将所有内容放入
  • 我知道...这是旧代码,我真的别无选择。我想我会放弃 jQuery 并像过去一样做这项工作。 :)

标签: jquery html


【解决方案1】:

这是一个known bug with IE and jQuery,因为它们在 IE 中模拟 change 冒泡的方式。不幸的是,除了删除内联 onchange 处理程序之外,目前还没有一个干净的解决方法。

【讨论】:

    【解决方案2】:

    我相信,jQuery 添加处理程序,而不是替换它们。因此,对于上述内容,您将获得一个用于 SELECT 元素中的 onchange 属性,另一个用于 jQuery 所做的添加。

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 2011-08-17
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多