JQuery更改事件有时不会触发。
要重现,请从位置选择元素中选择一些新值。 警报框不会出现。 因此,更改事件不会触发选择值更改。
如何解决?
name="eventName"
答案 0 :(得分:1)
您的问题是您正在尝试将事件侦听器附加到尚不存在的DOM元素。
<html>
<head>
<script type="text/javascript" src="https://www.omniva.ee/widget/widget.js"> </script>
<link rel="stylesheet" type="text/css" href="https://www.omniva.ee/widget/widget.css">
<script
src="https://code.jquery.com/jquery-2.2.4.js"
integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI="
crossorigin="anonymous"></script>
</head>
<body>
<div id="omniva_container1"></div>
<script>
// Wait for element to exist.
function elementLoaded(elementQuery, callback) {
let queryForElement = function() {
// Query the DOM for any elemnets matching the elementQuery parameter
if ($(elementQuery).length) {
// Found elemnet(s) matching the elementQuery, aka Element is now loaded.
callback($(elementQuery));
} else {
// Query again in 500ms. (minimum delay)
setTimeout(queryForElement, 500);
}
}
queryForElement();
};
elementLoaded('#omniva_select1', function(element) {
// Element is ready to use.
console.log('Attatched');
element.change(function() {
console.log('Triggered');
});
});
var wd1 = new OmnivaWidget();
</script>
</body>
&#13;
上面的代码每500ms检查一个与提供的查询字符串匹配的元素。然后它调用提供的回调并终止。