Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在IE中仅使用HTMLDOM方法触发jQuery更改事件?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在IE中仅使用HTMLDOM方法触发jQuery更改事件?

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方法触发更改事件。

我已经在好几个地方问过这个问题,现在我正在尽可能广泛地寻找解决方案。给定以下HTML:

<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);