2009-07-20 14 views
136

Comment compter le nombre d'options dans un élément DOM sélectionné en utilisant jQuery.Comptage du nombre d'options dans l'élément Select Dom dans JQuery

<select data-attr="dropdown" id="input1"> 
     <option value="Male" id="Male">Male</option> 
     <option value="Female" id="Female">Female</option> 
    </select> 

Comment trouver le numéro de l'étiquette d'options dans l'élément select DOM puisqu'avec que je veux ouvrir le panneau Paramètres avec ce nombre de champs d'entrée avec la valeur d'option correspondante dans la liste déroulante en elle et changer à nouveau dans le panneau Aperçu.

Lorsque la liste déroulante ci-dessus se trouve dans mon panneau de prévisualisation qui est généré par jQuery.

Répondre

16

Votre question est un peu déroutant, mais en supposant que vous souhaitez afficher le nombre d'options dans un panneau:

<div id="preview"></div> 

et

$(function() { 
    $("#preview").text($("#input1 option").length + " items"); 
}); 

Je ne sais pas, je comprends le reste de votre question.

47

La solution W3C:

var len = document.getElementById("input1").length; 
+3

Une variante de cette méthode avec mo le dernier javascript sera 'var len = document.querySelector (" # input1 "). length;' –

229
$('#input1 option').size(); 

Cela produira 2.

Voici le travail Fiddle

+90

Utilisez la longueur à la place. De la docs: "La méthode .size() est fonctionnellement équivalente à la propriété .length, mais la propriété .length est préférée car elle n'a pas la surcharge d'un appel de fonction." – Lee

+7

** Attention: ** "[La méthode' .size() 'est obsolète depuis jQuery 1.8 Utiliser la propriété' .length' à la place.] (Https://api.jquery.com/size/) ". – Pang

+0

Parfait! .. L'avertissement déconseillé est-il si important? Ou simplement déconseillé? – toha

5

Ok, j'ai eu quelques problèmes parce que j'étais à l'intérieur d'un

$('.my-dropdown').live('click', function(){ 
}); 

J'ai eu des multiples à l'intérieur de ma page c'est pourquoi j'ai utilisé un cours.

Ma liste déroulante est remplie automatiquement par une demande ajax quand je clique, donc je n'eu le $ élément (ce)

so ...

je devais faire:

$('.my-dropdown').live('click', function(){ 
    total_tems = $(this).find('option').length; 
}); 
11

Dans une zone d'option de sélection multiple, vous pouvez utiliser $('#input1 :selected').length; pour obtenir le nombre d'options sélectionnées. Cela peut être utile pour désactiver les boutons si un nombre minimum d'options n'est pas atteint.

function refreshButtons() { 
    if ($('#input :selected').length == 0) 
    { 
     $('#submit').attr ('disabled', 'disabled'); 
    } 
    else 
    { 
     $('#submit').removeAttr ('disabled'); 
    } 
} 
+0

J'ai trouvé cela au travail après avoir enlevé les accolades '$ ('# input1: selected'). Longueur;' documentation à l'appui https://api.jquery.com/length/ –

18

Vous pouvez utiliser length propriété et length est meilleur perfomance puis size.

$('#input1 option').length; 

Vous pouvez également utiliser la fonction size comme

$('#input1 option').size(); 

Demo

1

La meilleure forme est ce

$('#example option').length 
Questions connexes