Javascript 如何在IE中仅使用HTMLDOM方法触发jQuery更改事件?
我已经在好几个地方问过这个问题,现在我正在尽可能广泛地寻找解决方案。给定以下HTML:Javascript 如何在IE中仅使用HTMLDOM方法触发jQuery更改事件?,javascript,jquery,Javascript,Jquery,我已经在好几个地方问过这个问题,现在我正在尽可能广泛地寻找解决方案。给定以下HTML: <select id="test"> <option value="">Select One...</option> <option value="1">One</option> <option value="2">Two</option> </select> 我希望能够仅使用DOM方法触发更改事件。
<select id="test">
<option value="">Select One...</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
我希望能够仅使用DOM方法触发更改事件。也就是说,我不想调用jQuery.change()
或.trigger()
方法来触发jQuery更改事件。这是在的上下文中,它需要从任何页面上的
元素自动选择选项,因此不能依赖于在任何特定页面中加载jQuery。此外,我们只对IE这个问题的解决方案感兴趣,因为我们只对浏览器有困难。还要注意的是,我们需要一个解决方案,将工作的所有版本的IE从6-9。我想做如下的事情(具体代码如下):
但是,这不会触发jQuery事件。您可以在上找到此特定问题的完整工作示例。我必须调用哪些特定代码才能使其正常工作?您可以执行以下操作:
var e = document.getElementById('test');
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
e.dispatchEvent(evt);
fiddle here(在IE9中对我有效)这主意不错,但对
createEvent()
的支持仅在IE9中添加。有没有类似的方法(比如,createEventObject()
)适用于以前的版本?我知道的唯一其他方法是使用e.firevent(“onchange”);(这对我在IE9上不起作用,所以我认为那是你遇到问题的浏览器)不,我们实际上在IE的所有版本上都遇到了问题。我将编辑这个问题以使其更清楚。完整的工作代码可以在原始问题()中的链接上找到。这个答案使我走上了正确的道路。
var e = document.getElementById('test');
e.item(1).selected = true;
e.fireEvent("onchange"); // What needs to happen here to get the jQuery event to fire?
var e = document.getElementById('test');
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
e.dispatchEvent(evt);