繁体   English   中英

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

[英]How do I trigger the jQuery change event using only HTML DOM methods in IE?

我已经在几个地方问了这个问题,我现在正在尽可能广泛地投入网络,看看是否有我可以使用的解决方案。 给出以下HTML:

<select id="test">
  <option value="">Select One...</option>
  <option value="1">One</option>
  <option value="2">Two</option>
</select>

以及以下jQuery事件绑定:

$("#test").change(function( event ) {
  console.log("Changed");
});

我希望能够仅使用DOM方法触发更改事件。 也就是说,我不想调用jQuery .change().trigger()方法来触发jQuery更改事件。 这是在浏览器自动化框架的上下文中,它需要自动从任何页面上的<select>元素中选择选项,因此不能依赖于在任何特定页面中加载的jQuery。 此外,我们只对IE的这个问题的解决方案感兴趣,因为我们只对该浏览器有困难。 另请注意,我们需要一个适用于6-9的所有IE版本的解决方案。 我想做类似以下的事情(故意特定于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?

但是,这不会导致触发jQuery事件。 您可以在此链接中找到此特定问题的完整工作示例。 为了让它工作,我必须调用哪些具体代码?

你可以这样做:

var e = document.getElementById('test');
var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", true, true);
    e.dispatchEvent(evt);

在这里摆弄http://jsfiddle.net/a5DUE/7/ (在IE9中适合我)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM