Javascript 如何强制在选择元素上发生更改事件

Javascript 如何强制在选择元素上发生更改事件,javascript,jquery,html-select,jquery-events,Javascript,Jquery,Html Select,Jquery Events,JQuery更改事件有时不会触发 要复制,请从location select元素中选择一些新值。 警报框不会出现。 因此,更改事件不会在选择值更改时触发 如何修复它 $function{ $omniva\u select1.更改功能{ 警报“变更事件未触发”; }; }; var wd1=新的OmnivaWidget; 您的问题是试图将事件侦听器附加到尚不存在的DOM元素 //等待元素存在。 function elementLoadedelementQuery,回调{ 让queryForEl

JQuery更改事件有时不会触发

要复制,请从location select元素中选择一些新值。 警报框不会出现。 因此,更改事件不会在选择值更改时触发

如何修复它

$function{ $omniva\u select1.更改功能{ 警报“变更事件未触发”; }; }; var wd1=新的OmnivaWidget;
您的问题是试图将事件侦听器附加到尚不存在的DOM元素

//等待元素存在。 function elementLoadedelementQuery,回调{ 让queryForElement=函数{ //在DOM中查询与elementQuery参数匹配的任何元素 如果$elementQuery.length{ //找到与elementQuery匹配的元素,aka元素现在已加载。 回调$elementQuery; }否则{ //500毫秒后再次查询。最小延迟 setTimeoutqueryForElement,500; } } queryForElement; }; Element加载了'omniva_select1',functionelement{ //元素已准备好使用。 控制台。日志“已连接”; 元素转换函数{ console.log“已触发”; }; }; var wd1=新的OmnivaWidget;
我认为您正在尝试将事件侦听器附加到尚不存在的DOM元素。是否应该使用javascript setTimeout方法延迟事件附加,或者如果创建元素,是否可以为将来定义事件附加?解决此问题的最佳做法是什么?widget.js位于第三方服务器中,无法在此服务器中更改。@Andrus您可能应该看看,它是关于在将元素注入DOM后如何运行某些js的。@Andrus我已更新了我的答案,以反映上述帖子中的一个解决方案。