如何在 Select2 下拉菜单上捕获滚动事件?

How to capture scroll event on Select2 dropdown?

如何为使用 Select2 的 HTML 元素捕获 scroll 事件? 我想捕获滚动事件以将 <option> 动态添加到我的下拉列表中。

供您参考:

测试解决方案 1:(无效)

$("body").on("scroll", "#select2-d-results", function(){
   alert('scroll');
})

测试方案二:(无效)

$('#select2-d-results').scroll(function() {
   alert('scroll');
});

问题是由于滚动事件在DOM

中没有冒泡

方法一

使用 mousewheel 事件而不是滚动

方法二(推荐)

使用addEventListener

Jquery .on('scroll') not firing the event while scrolling

$("#d").select2();

// using on mousedown 
$("body").on("mousewheel", "#select2-d-results", function(){
   console.log('mousewheel');
})

// using addEventListener
document.addEventListener('scroll', function (event) {
    if (event.target.id === 'select2-d-results') { 
        console.log('scrolling');
    }
}, true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>
<link href="https://rawgit.com/select2/select2/master/dist/css/select2.min.css" rel="stylesheet" />

<select id="d" style="width: 300px">
  <option value="1">Argentina</option>
  <option value="2">Brazil</option>
  <option value="3">China</option>
  <option value="4">India</option>
  <option value="5">Indonesia</option>
  <option value="1">Argentina</option>
  <option value="2">Brazil</option>
  <option value="3">China</option>
  <option value="4">India</option>
  <option value="5">Indonesia</option>
</select>