我正在使用jQuery将事件绑定到a的onChange处理程序,如下所示:
$("#accounts").change(function() { DoSomething(); });
我遇到的问题是,虽然在Firefox中一切正常,但事件永远不会在IE中被触发。我知道IE处理onChange事件的方式不同于Firefox,如其他地方提到的here。但是,我认为这不是问题所在,因为事件永远不会触发,即使点击屏幕上的其他元素也是如此。
为了确保我的jQuery代码没有问题,我尝试内联实现onChange事件:
<select id="accounts" onChange="DoSomething();">
<option value="1">Account 1</option>
<option value="2">Account 2</option>
{omitted remaining 3000 options of list for brevity}
</select>
但即使以这种方式实施,事件仍未触发。
目前,我已将代码更改为使用onClick事件,因为页面流量较低且被调用的函数相当便宜。也就是说,我想知道问题是什么,因为我确信我将来会再次遇到它。
答案 0 :(得分:2)
有时,当您的标记未正确包装html层次结构时。这可能是我可能发生的原因,一旦我纠正了标记,它就运行良好。
答案 1 :(得分:2)
当你使用IE浏览器时,可以通过使用它作为在setTimeout中执行的代码来调用来自另一个线程的DoSomething来解决它。
if (jQuery.browser.msie) { setTimeout(DoSomething, 0); } else { DoSomething(); }
根据Microsoft,这可能是因为发生了竞争条件。如果这对你有用,请告诉我们。