summaryrefslogtreecommitdiffstats
path: root/js/jquery.multi-select.js
diff options
context:
space:
mode:
authorlou <louiscuny@gmail.com>2011-07-08 12:14:03 +0200
committerlou <louiscuny@gmail.com>2011-07-08 12:14:03 +0200
commit71366c2fae2d3c4dd902d4562009c2d110468a4a (patch)
tree6843b8e2808d89f3178c6bf1ba298ccbdcc4a2e0 /js/jquery.multi-select.js
parent27ef9ed92820cf9c76ebed3e1b459b74f17cf834 (diff)
downloadmulti-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.js80
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){