【发布时间】:2016-07-11 22:37:52
【问题描述】:
好的,我知道还有其他与我相关的问题,但我读过的都没有回答我的问题。
我有一个选择标记,其中包含一些绑定到更改事件的选项,但是当用户单击选择框然后向上/向下按下时,更改事件不会在 IE 中触发。它在 Firefox 中触发,我还没有检查 Chrome。
所以我想我想知道是否有一个简单的解决方法我想做的事
$("#selector").change(function () {//Add code });
我现在的解决方法是这样做:
$("#selector").bind('change keyup',function () {//Add code });
我想我可以像这样创建一个插件:
$.fn.myChange = function (fcn) { return this.bind('change keyup',fcn);}
我的主要想法是,jquery 作为一个库应该抽象出浏览器(in)兼容性的丑陋细节,所以我希望我仍然可以使用基本的 .change 函数而不必担心我使用的是什么浏览器.
我只是想知道这是否应该这样做。有没有更好的方法?
更新:
我向 jquery 团队提交了bug,看看他们的想法。
Here's an example 显示问题。打开它,单击选择框,然后按向上/向下。您会注意到 IE 不会触发 change 事件,而 FF 和 Chrome 会触发。
【问题讨论】:
-
除非选择了该选项,否则不会触发选择上的更改事件。仅通过向上/向下移动选项列表不会触发它。你确定它可以在 Firefox 中运行吗?
-
是的,它在 FireFox 中运行,然后检查了 IE8,但没有相同的功能
-
jQuery 保证适用于所有浏览器,这是他们的政策。这就是为什么某些功能需要很长时间才能添加或根本不添加的原因(例如与 CSS3 相关的东西)。至于 IE 问题 - 当您实际单击一个选项时会触发 onchange 事件吗?如果是这样,我的猜测是 IE 仅在您选择选项并折叠选项列表时触发它,而 FF 首先执行 onchange 并且在您折叠列表时不触发任何事件。如果是这样,它是内部浏览器实现,您无能为力:(.
-
@mingos 如果你点击它会触发它,而不是当你按下向上/向下键时。我只是在争辩这样一个事实,作为开发人员,我不在乎他们是否点击它,我只关心它是否“改变”。我向 jquery 提交了一个错误,我们将看看他们的想法。
-
好吧,如果它有效,但只有当你点击一个选项时,我真的认为这是浏览器如何在内部处理事件触发的问题,没有什么可做的(即,jQuery devs可能会很无奈)。我希望不是这样,我祝你一切顺利......但我仍然持怀疑态度:)。
标签: jquery cross-browser