javascript - 如何在 Select2 下拉列表中捕获滚动事件?
问题描述
如何捕获scroll
使用的 HTML 元素的事件Select2
?我想捕获滚动事件以动态添加<option>
到我的下拉列表中。
供您参考:
- 我正在使用
jQuery
,下拉菜单使用Select2
. - 我的
id
HTML 元素是d
. (虽然命名不合适,以后会重命名)
测试解决方案1:(不工作)
$("body").on("scroll", "#select2-d-results", function(){
alert('scroll');
})
测试解决方案2:(不工作)
$('#select2-d-results').scroll(function() {
alert('scroll');
});
解决方案
问题是由于滚动事件在 DOM 中没有冒泡
方法一
使用mousewheel
事件而不是滚动
方法二(推荐)
使用addEventListener
$("#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>
推荐阅读
- android - RxJava 收集排放到列表
- python - 生成随机数而不分配新的内存块
- python - 如何在不使用 split 函数的情况下从字符串中提取单词?
- vue.js - Vue-Lottie 和 Nuxt
- nuget - NuGet 包中 Visible="false" 的子目录中没有项目显示子目录文件夹
- java - 不调用方法 doOnComplete、doOnTerminate 或 doOnError
- c# - 为什么 RollingInterval.Day 不断创建新的 Serilog 日志文件?
- node.js - 节点无法在 High Sierra 上升级
- ios - 除了 url 方案方法之外,还有其他方法可以在我的 iOS 应用程序中实现 MS Word 吗?
- ios - 当任何其他 UIViewController 被推送到堆栈时如何从 UITabBarController 隐藏 TabBar