2009-05-18 5 views
1

Cette question est similaire à celui-ci How do I add options to a DropDownList using jQuery? mais je voudrais ajouter de façon ordonnée. L'exemple de l'autre question l'ajoute simplement à la fin de la liste. Le code est le suivant:Comment ajouter des options à un DropDownList en utilisant jQuery (ordonné)?

var myOptions = { 
     1: "Test" 
     2: "Another" 
}; 
$.each(myOptions, function(val, text) { 
     $('#Projects').append(
      $('<option></option').val(val).html(text) 
    ); 
}); 

On suppose la liste contient déjà 3 éléments: "Blah", "Foo" et "Zebra". J'aimerais pouvoir ajouter les deux nouvelles options ("Test" et "Autre") à la liste déroulante afin qu'elle soit ordonnée ("Another", "Blah", "Foo", "Test" et "Zebra") en utilisant jQuery.

Toute aide est très appréciée !!!

Répondre

1

Donnez un aller:

// Sort Function 
function sortAlpha(a,b) { 
    if(a.name > b.name) { 
     return 1; 
    } else if(a.name < b.name) { 
     return -1; 
    } 
    return 0; 
} 


// Options you want to add 
var myOptions = [ {id:1, name:"Test"}, {id:2, name:"Another" } ]; 

// Create array from existing options and merge 
$.merge(myOptions, 
    $.map($('#Projects').find('option'), function(n){ 
     return { id:n.value, name:n.innerHTML}; 
    }) 
); 

// Sort all options using above sort function 
myOptions.sort(sortAlpha); 

// Clear the <select> of existing options 
$('#Projects').empty(); 

// Add the options to the <select> 
$.each(myOptions, function() { 
     $('#Projects').append(
      $('<option></option').val(this.id).html(this.name) 
    ); 
}); 
1

Jetez un oeil à la réponse liée jQuery here. Vous devrez, bien sûr, ajouter vos nouvelles options avant d'appeler la méthode de tri.

Questions connexes