J'ai le menu Select suivant ( jsfiddle ): Utilisation de JavaScript, comment puis-je résoudre la liste alphabétiquement, à l'exclusion des 2 premières options ( voitures code> et ------- code>), qui doit rester en haut? Merci d'avance pour toute aide. P> p>
4 Réponses :
Je commencerais par donner un nom de classe à toutes les entrées que je veux trier et donner et identifier à la sélection: comme pour le JavaScript P> var mylist = $('#sortableCars');
var listitems = mylist.children('option.sortMe').get();
listitems.sort(function(a, b) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });
Vous obtiendrez une sélection avec les options non ordonnées et les options commandées de la manière que vous utilisez MyList.Append ().
Fermer, mais le JS ne fonctionne pas bien dans mes tests. Modification de listitems à être $ ('# sortablecars> .sortme') CODE> et supprime la classe Sortme code> de la classe de l'option "-------" résout mes problèmes.
Je l'ai réparé pour sélectionner uniquement ceux avec la classe 'Sortme'. Drôle Comment vous pouvez manquer les détails importants ...
Être puriste, je dirais que JQuery a été spécifiquement mentionné ou demandé, il peut ne pas être utilisé dans ce projet pour une raison ou une autre. Voici un exemple en utilisant Pure JavaScript. http://jsfiddle.net/ Gayvl / 7 / p> mis à jour strong> pour être neutre neutre. P> p>
J'aime beaucoup travailler avec JQuery parce que c'est si facile ... ce qui est aussi la plus grande chute de la chute. Aucune raison d'ajouter des frais généraux supplémentaires - je voterais pour votre réponse.
JQuery est génial, et j'avais lourdement défendre son usage ... mais je me sentirais coupable si quelqu'un devait ajouter JQuery à un projet juste pour soutenir quelque chose comme ça ... Merci pour le vote de confiance :)
Les majuscules de ce put avant tous les minuscules menant à quelque chose comme abcabc code> plutôt que AABBCC code>
J'ai faussé une légère modification pour que cela soit aussi proche de la casse neutre car il est susceptible de devoir être.
Notez que cela ne conserve pas l'attribut sélectionné code> à l'option correcte
Ceci échoue si la valeur de
Ma première approche était similaire à Koolinc, en utilisant Array.Prototype.slice pour convertir le nodéliste des enfants
Ceci est juste un répondeur plus générique basé sur @jeff Parker's One!
function sortSelect(select, startAt) {
if(typeof startAt === 'undefined') {
startAt = 0;
}
var texts = [];
for(var i = startAt; i < select.length; i++) {
texts[i] = [
select.options[i].text.toUpperCase(),
select.options[i].text,
select.options[i].value
].join('|');
}
texts.sort();
texts.forEach(function(text, index) {
var parts = text.split('|');
select.options[startAt + index].text = parts[1];
select.options[startAt + index].value = parts[2];
});
}
Ceci échoue si la valeur de
En ce qui concerne l'affichage d'une position dans la liste