如何在multiple select2 jQuery插件中获取单击的值?
上面的代码返回数组中所有选定的值。我只想在multiple select 2上获取最新的点击值。不幸的是,据我所知,没有一个完美的解决方案 基本上只需跟踪所有值并查看哪些值是新值(注意lastClicked可以是一个列表,因为可以一次选择多个值):如何在multiple select2 jQuery插件中获取单击的值?,jquery,select2,Jquery,Select2,上面的代码返回数组中所有选定的值。我只想在multiple select 2上获取最新的点击值。不幸的是,据我所知,没有一个完美的解决方案 基本上只需跟踪所有值并查看哪些值是新值(注意lastClicked可以是一个列表,因为可以一次选择多个值): var lastClicked=null; var=[]; $('.product下拉列表').change(函数(){ var curClicked=this.val(); lastClicked=curClicked.filter(函数(x){r
var lastClicked=null;
var=[];
$('.product下拉列表').change(函数(){
var curClicked=this.val();
lastClicked=curClicked.filter(函数(x){return prevClicked.indexOf(x)<0});
});
var=[];
var=[];
var差=[];
$('.product下拉列表').change(函数(){
curClicked=$(this.val();
if(curClicked==null){
curClicked=[];
}
clickType=getClickType();
var clickedValue=diffArray(curClicked,prevClicked);
console.log(点击类型+“”+点击值);
prevClicked=curClicked;
});
函数getClickType(){
var prevLen=prevClicked.length;
var CurLen=curClicked.length;
如果(前向
查看选择2:选择事件并使用事件参数数据
还有一个select2:unselect
$('select')。select2()
$('select')。打开('select2:select',函数(e){
var数据=e.params.data;
console.log(data.id);
console.log(data.text);
});
$('select')。打开('select2:unselect',函数(e){
var数据=e.params.data;
console.log(data.id);
console.log(data.text);
});代码>
福
酒吧
富吧
感谢您的快速回复。明白你的意思了。但是上面的代码仍然返回所有选定值的数组。谢谢你。这应该被选为答案。
$(document.body).on('change','.product-dropdown',function(){
var selectVaule = $(this).val();
if(selectVaule){
alert(selectVaule+ 'select');
}
});
var lastClicked= null;
var prevClicked = [];
$('.product-dropdown').change(function(){
var curClicked = this.val();
lastClicked = curClicked.filter(function(x) { return prevClicked.indexOf(x) < 0 });
});
var prevClicked = [];
var curClicked = [];
var difference = [];
$('.product-dropdown').change(function(){
curClicked = $(this).val();
if(curClicked == null){
curClicked=[];
}
clickType = getClickType();
var clickedValue = diffArray(curClicked, prevClicked);
console.log(clickType + ' ' + clickedValue);
prevClicked = curClicked;
});
function getClickType(){
var prevLen = prevClicked.length;
var CurLen = curClicked.length;
if(prevLen < CurLen){
return 'select';
}
else{
return 'unselect';
}
}
function diffArray(a1, a2) {
var a = [], diff = [];
for (var i = 0; i < a1.length; i++) {
a[a1[i]] = true;
}
for (var i = 0; i < a2.length; i++) {
if (a[a2[i]]) {
delete a[a2[i]];
} else {
a[a2[i]] = true;
}
}
for (var k in a) {
diff.push(k);
}
return diff;
}