diff options
author | lou <louiscuny@gmail.com> | 2011-10-03 18:02:24 +0200 |
---|---|---|
committer | lou <louiscuny@gmail.com> | 2011-10-03 18:02:24 +0200 |
commit | 7a5fb895360046220e3bc5a8e13701a1b7840b42 (patch) | |
tree | f02a55d1a1d33502b23aad5e453f6c6fe3f4e7d9 /js/jquery.multi-select.js | |
parent | 700e64026b151fe646dbcba5b38629153e451bef (diff) | |
parent | dbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5 (diff) | |
download | multi-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.zip multi-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.tar.gz multi-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.tar.bz2 |
Merge branch 'master' into callbackOnInit
Conflicts:
js/jquery.multi-select.js
Diffstat (limited to 'js/jquery.multi-select.js')
-rw-r--r-- | js/jquery.multi-select.js | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/js/jquery.multi-select.js b/js/jquery.multi-select.js index 1127d16..bb69c08 100644 --- a/js/jquery.multi-select.js +++ b/js/jquery.multi-select.js @@ -1,3 +1,13 @@ +/* +* MultiSelect v0.2 +* Copyright (c) 2011 Louis Cuny +* +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html +* +*/ + (function($){ var msMethods = { 'init' : function(options){ @@ -5,6 +15,7 @@ disabledClass : 'disabled', emptyArray : false, callbackOnInit: false + keepOrder : false }; if(options) { this.settings = $.extend(this.settings, options); @@ -110,7 +121,30 @@ selectedLi.click(function(){ ms.multiSelect('deselect', $(this).attr('ms-value')); }); - selectedUl.append(selectedLi); + + var selectedUlLis = selectedUl.children('.ms-elem-selected'); + if (method != 'init' && ms.data('settings').keepOrder && selectedUlLis.length > 0) { + + var getIndexOf = function(value) { + elems = selectableUl.children('.ms-elem-selectable'); + return(elems.index(elems.closest('[ms-value="'+value+'"]'))); + } + + var index = getIndexOf(selectedLi.attr('ms-value')); + if (index == 0) + selectedUl.prepend(selectedLi); + else { + for (i = index - 1; i >= 0; i--){ + if (selectedUlLis[i] && getIndexOf($(selectedUlLis[i]).attr('ms-value')) < index) { + $(selectedUlLis[i]).after(selectedLi); + break; + } + } + } + } else { + selectedUl.append(selectedLi); + } + if (ms.find("option[value='']")){ ms.find("option[value='']").removeAttr('selected'); } |