我对jquery不太熟悉,所以不要太严格。任务是在Chosen multiselect插件中进行排序。 这是解决方法:
$(function(){
$("select#Books_id_author").each(function(){
if($(this).data("order")==true){
$(this).val('');
$(this).chosen();
var $ordered = $('[name="_'+jQuery(this).attr('id')+'"]');
var selected = $ordered.val().split(',');
var chosen_object = $(this).data('chosen');
$.each(selected, function(index, item){
$.each(chosen_object.results_data, function(i, data){
if(data.value == item){
$("#"+data.dom_id).trigger('mouseup');
}
});
});
$(this).data("backupVal",$(this).val());
$(this).change(function(){
var backup = $(this).data("backupVal");
var current = $(this).val();
if(backup == null){
backup = [];
}
if(current == null){
current = [];
}
if(backup.length > current.length){
$.each(backup, function(index, item) {
if($.inArray(item, current) < 0){
for(var i=0; i<selected.length; i++){
if(selected[i] == item){
selected.splice(i,1);
}
}
}
});
}else if(backup.length < current.length){
$.each(current, function(index, item) {
if($.inArray(item, backup) < 0){
selected.push(item);
}
});
}
$ordered.val(selected.join(','));
$(this).data("backupVal",current);
});
}else{
$(this).chosen();
}
});
});
问题是,该插件在页面加载后处于活动状态(我认为这是因为触发器('mouseup'))并显示结果丢失。
选择中是否有任何触发器使其不活动,或者可能是另一个触发器。 感谢。
答案 0 :(得分:0)
通过编写所选的订单插件解决了问题。