diff options
author | lou <louiscuny@gmail.com> | 2011-07-08 12:14:03 +0200 |
---|---|---|
committer | lou <louiscuny@gmail.com> | 2011-07-08 12:14:03 +0200 |
commit | 71366c2fae2d3c4dd902d4562009c2d110468a4a (patch) | |
tree | 6843b8e2808d89f3178c6bf1ba298ccbdcc4a2e0 /js/jquery.multi-select.js | |
parent | 27ef9ed92820cf9c76ebed3e1b459b74f17cf834 (diff) | |
download | multi-select-71366c2fae2d3c4dd902d4562009c2d110468a4a.zip multi-select-71366c2fae2d3c4dd902d4562009c2d110468a4a.tar.gz multi-select-71366c2fae2d3c4dd902d4562009c2d110468a4a.tar.bz2 |
fix Multi select duplicating
Diffstat (limited to 'js/jquery.multi-select.js')
-rw-r--r-- | js/jquery.multi-select.js | 80 |
1 files changed, 41 insertions, 39 deletions
diff --git a/js/jquery.multi-select.js b/js/jquery.multi-select.js index 42e5b65..d7d50ac 100644 --- a/js/jquery.multi-select.js +++ b/js/jquery.multi-select.js @@ -15,49 +15,51 @@ multiSelects.each(function(){ var ms = $(this); - ms.attr('id', ms.attr('id') ? ms.attr('id') : 'ms-'+Math.ceil(Math.random()*1000)); - var container = $('<div id="ms-'+ms.attr('id')+'" class="ms-container"></div>'), - selectableContainer = $('<div class="ms-selectable"></div>'), - selectedContainer = $('<div class="ms-selection"></div>'), - selectableUl = $('<ul></ul>'), - selectedUl = $('<ul></ul>'); - - if (multiSelects.settings.emptyArray){ - if (ms.children("option[value='']").length == 0){ - ms.prepend("<option value='' selected='selected'></option>"); - } else { - ms.children("option[value='']").attr('selected', 'selected'); - } - } - ms.data('settings', multiSelects.settings); - ms.children("option:not(option[value=''])").each(function(){ - var selectableLi = $('<li ms-value="'+$(this).val()+'">'+$(this).text()+'</li>'); + if (ms.next('.ms-container').length == 0){ + ms.attr('id', ms.attr('id') ? ms.attr('id') : 'ms-'+Math.ceil(Math.random()*1000)); + var container = $('<div id="ms-'+ms.attr('id')+'" class="ms-container"></div>'), + selectableContainer = $('<div class="ms-selectable"></div>'), + selectedContainer = $('<div class="ms-selection"></div>'), + selectableUl = $('<ul></ul>'), + selectedUl = $('<ul></ul>'); - if ($(this).attr('title')) - selectableLi.attr('title', $(this).attr('title')); - if ($(this).attr('disabled') || ms.attr('disabled')){ - selectableLi.attr('disabled', 'disabled'); - selectableLi.addClass(multiSelects.settings.disabledClass) + if (multiSelects.settings.emptyArray){ + if (ms.children("option[value='']").length == 0){ + ms.prepend("<option value='' selected='selected'></option>"); + } else { + ms.children("option[value='']").attr('selected', 'selected'); + } } - selectableLi.click(function(){ - ms.multiSelect('select', $(this).attr('ms-value')); + ms.data('settings', multiSelects.settings); + ms.children("option:not(option[value=''])").each(function(){ + var selectableLi = $('<li ms-value="'+$(this).val()+'">'+$(this).text()+'</li>'); + + if ($(this).attr('title')) + selectableLi.attr('title', $(this).attr('title')); + if ($(this).attr('disabled') || ms.attr('disabled')){ + selectableLi.attr('disabled', 'disabled'); + selectableLi.addClass(multiSelects.settings.disabledClass) + } + selectableLi.click(function(){ + ms.multiSelect('select', $(this).attr('ms-value')); + }); + selectableUl.append(selectableLi); + }); + if (multiSelects.settings.selectableHeader){ + selectableContainer.append(multiSelects.settings.selectableHeader); + } + selectableContainer.append(selectableUl); + if (multiSelects.settings.selectedHeader){ + selectedContainer.append(multiSelects.settings.selectedHeader); + } + selectedContainer.append(selectedUl); + container.append(selectableContainer); + container.append(selectedContainer); + ms.after(container); + ms.children('option:selected').each(function(){ + ms.multiSelect('select', $(this).val(), 'init'); }); - selectableUl.append(selectableLi); - }); - if (multiSelects.settings.selectableHeader){ - selectableContainer.append(multiSelects.settings.selectableHeader); - } - selectableContainer.append(selectableUl); - if (multiSelects.settings.selectedHeader){ - selectedContainer.append(multiSelects.settings.selectedHeader); } - selectedContainer.append(selectedUl); - container.append(selectableContainer); - container.append(selectedContainer); - ms.after(container); - ms.children('option:selected').each(function(){ - ms.multiSelect('select', $(this).val(), 'init'); - }); }); }, 'select' : function(value, method){ |