如何强制更改事件在select元素上发生

时间:2017-09-17 12:12:56

标签: javascript jquery html-select jquery-events

JQuery更改事件有时不会触发。

要重现,请从位置选择元素中选择一些新值。 警报框不会出现。 因此,更改事件不会触发选择值更改。

如何解决?

name="eventName"

1 个答案:

答案 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;
&#13;
&#13;

上面的代码每500ms检查一个与提供的查询字符串匹配的元素。然后它调用提供的回调并终止。