我写了一个Chrome扩展程序,可以自动填写一些注册表单。在“更改”事件中需要触发一些选择字段才能启动一些Ajax调用。
首先我使用JQuery attr或val来更改select字段的值,而不是使用 .trigger 来调用“change”事件,但最后一个不起作用。< / p>
示例:
我想选择包含单词“London”的选项并调用 change元素是为了启动native的一些操作 在“更改”事件中有一些监听器的代码
jQuery("#SelectElement option:contains('London')").attr("selected", "selected");
jQuery("#SelectElement").trigger("change"); <--- not works
我也试过了:
jQuery("#SelectElement option:containt('London')").attr("selected", "selected").change();
但是,如果我在控制台上尝试此代码,则可以正常运行。
连连呢?
答案 0 :(得分:3)
我有同样的问题,据我所知,因为有一些叫做框架事件监听器的东西。你不能通过jquery从你的代码中触发!但解决方案是以这种方式触发事件:
$(selector)[0].dispatchEvent(new Event("eventName"))
答案 1 :(得分:2)
就我而言,
HTML
没用。
我必须像这样初始化事件:
var event = new CustomEvent('change');
第一个arg&#39;起泡&#39;应该是真的,所以事件应该在事件链中冒出来。
var evt = document.createEvent("HTMLEvents");
evt.initEvent("keyup", true, true);
来源: https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent