onChange事件永远不会在Internet Explorer </select>中为<select>触发

时间:2010-03-08 18:37:49

标签: javascript jquery internet-explorer

我正在使用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事件,因为页面流量较低且被调用的函数相当便宜。也就是说,我想知道问题是什么,因为我确信我将来会再次遇到它。

2 个答案:

答案 0 :(得分:2)

有时,当您的标记未正确包装html层次结构时。这可能是我可能发生的原因,一旦我纠正了标记,它就运行良好。

答案 1 :(得分:2)

当你使用IE浏览器时,可以通过使用它作为在setTimeout中执行的代码来调用来自另一个线程的DoSomething来解决它。

if (jQuery.browser.msie) { setTimeout(DoSomething, 0); } else { DoSomething(); }

根据Microsoft,这可能是因为发生了竞争条件。如果这对你有用,请告诉我们。