如何使用纯 Javascript 和文档查询选择器实现 jQuery .on() 函数

2024-02-29

jquery on() 函数 http://api.jquery.com/on/允许 DOM 事件在将来可能插入的元素上触发。如何使用纯 Javascript 来实现这一点,尤其是mouseenter具有特定类的元素上的事件,无需 jQuery 并使用现代文档.querySelector http://www.w3schools.com/jsref/met_document_queryselector.asp.


在这里找到了答案https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter

对于任何有兴趣实现代码的人如下:

<ul id="test">
  <li>
    <ul class="enter-sensitive">
      <li>item 1-1</li>
      <li>item 1-2</li>
    </ul>
  </li>
  <li>
    <ul class="enter-sensitive">
      <li>item 2-1</li>
      <li>item 2-2</li>
    </ul>
  </li>
</ul>

<script>
  var delegationSelector = ".enter-sensitive";

  document.getElementById("test").addEventListener("mouseover", function( event ) {
    var target = event.target,
        related = event.relatedTarget,
        match;

    // search for a parent node matching the delegation selector
    while ( target && target != document && !( match = matches( target, delegationSelector ) ) ) {
        target = target.parentNode;
    }

    // exit if no matching node has been found
    if ( !match ) { return; }

    // loop through the parent of the related target to make sure that it's not a child of the target
    while ( related && related != target && related != document ) {
        related = related.parentNode;
    }

    // exit if this is the case
    if ( related == target ) { return; }

    // the "delegated mouseenter" handler can now be executed
    // change the color of the text
    target.style.color = "orange";
    // reset the color after a small amount of time
    setTimeout(function() {
        target.style.color = "";
    }, 500);


  }, false);


  // function used to check if a DOM element matches a given selector
  // the following code can be replaced by this IE8 compatible function: https://gist.github.com/2851541
  function matches( elem, selector ){
    // the matchesSelector is prefixed in most (if not all) browsers
    return elem.matchesSelector( selector );
  };
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用纯 Javascript 和文档查询选择器实现 jQuery .on() 函数 的相关文章

随机推荐