Commit 9abf0138 authored by David Stutz's avatar David Stutz

Merge pull request #553 from melgish/refresh-performance

Fixed #548. Updated refresh to improve performance with large lists.
parents 6367ced0 b676e5e3
...@@ -935,41 +935,48 @@ ...@@ -935,41 +935,48 @@
/** /**
* Refreshs the multiselect based on the selected options of the select. * Refreshs the multiselect based on the selected options of the select.
*/ */
refresh: function() { refresh: function () {
$('option', this.$select).each($.proxy(function(index, element) { var inputs = $.map($('li input', this.$ul), $);
var $input = $('li input', this.$ul).filter(function() { var selectedClass = this.options.selectedClass;
return $(this).val() === $(element).val(); $('option', this.$select).each(function (index, element) {
}); var $elem = $(element);
var value = $elem.val();
if ($(element).is(':selected')) { var $input;
$input.prop('checked', true); for (var i = inputs.length; 0 < i--; /**/) {
if (value !== ($input = inputs[i]).val())
if (this.options.selectedClass) { continue; // wrong li
$input.closest('li')
.addClass(this.options.selectedClass); if ($elem.is(':selected')) {
$input.prop('checked', true);
if (selectedClass) {
$input.closest('li')
.addClass(selectedClass);
}
} }
} else {
else { $input.prop('checked', false);
$input.prop('checked', false);
if (this.options.selectedClass) { if (selectedClass) {
$input.closest('li') $input.closest('li')
.removeClass(this.options.selectedClass); .removeClass(selectedClass);
}
} }
}
if ($(element).is(":disabled")) { if ($elem.is(":disabled")) {
$input.attr('disabled', 'disabled') $input.attr('disabled', 'disabled')
.prop('disabled', true) .prop('disabled', true)
.closest('li') .closest('li')
.addClass('disabled'); .addClass('disabled');
} }
else { else {
$input.prop('disabled', false) $input.prop('disabled', false)
.closest('li') .closest('li')
.removeClass('disabled'); .removeClass('disabled');
}
break; // assumes unique values
} }
}, this)); });
this.updateButtonText(); this.updateButtonText();
this.updateSelectAll(); this.updateSelectAll();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment