jquery - 如果由类初始化,则 select2 触发两次
问题描述
我有几个使用按钮动态生成的选择,所以我只能按类识别它。问题是当select2:selectevent
被触发时,如果被触发 N 次就会发出警报,而不仅仅是我更改了值的地方。
如何解决这个问题?(我只能按类分配初始化插件,没有唯一的id)
<a id="add">Add new</a>
<div id="container">
</div>
$(document).ready(function() {
$("#add").on("click", function(e){
e.preventDefault();
$("#container").append('<select class="idFolder" name="idFolder[]"><option value="AL">Alabama</option><option value="WY">Wyoming</option></select>');
$('.idFolder').select2({
width: '100%'
}).on('select2:select', function(e) {
var id = e.params.data.id;
alert(id);
});
});
});
更新我的真实案例:https ://jsfiddle.net/1jaw6d1x/3/
解决方案
您使用的解决方案涉及迭代所有选择元素,然后选择您尝试定位的元素,您可以避免使用.each()
. 您可以使用 acounter
来避免这种情况,并且只select2
在较新的元素上绑定一次。
这样您就不必迭代所有选择,并且您已经有了要从集合中选择的元素的索引,想象在第 51 次选择中添加 50 个或更多选择,它将.each()
首先迭代所有 50 个然后到达第 51 个然后绑定select2
。
var objectS = $(".idFolder");
var currentSelect= $(objectS[count]);
请参阅下面的演示
var count = 0;
$(document).ready(function() {
$("#add").on("click", function(e) {
e.preventDefault();
$("#container").append('<select class="idFolder" name="idFolder[]"><option value="AL">Alabama</option><option value="WY">Wyoming</option></select>');
var objectS = $(".idFolder");
var currentSelect = $(objectS[count])
currentSelect.select2({
width: '100%'
}).on('select2:select', function(e) {
var id = e.params.data.id;
alert(id);
});
count++;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<a id="add">Add new</a>
<br><br>
<div id="container">
</div>
推荐阅读
- sql-server - T-SQL:自引用计算字段
- reactjs - 倒计时反应后如何使用户注销
- google-play - 我无法取消发布我的 Google Play 应用。取消发布按钮对我不起作用
- firebase - firebase 托管使用 .env 的 api 键显示错误 > index.cjs.js:536 Uncaught FirebaseError: projectId must be a string in FirebaseApp.options
- javascript - 掷出的两个骰子的值如何相加
- oracle - SSIS Oracle 数据加载中的参数化查询
- html - 在 ng2-pdf-viewer 中查看所有文档
- pipeline - 如何从客户端启动 AWS Codepipeline?
- javascript - 引导标签输入 - 值不会从标签输入中删除
- c# - 为什么不能在 C# 中初始化 Main 侧的结构值