2009-07-20 2 views
136

So zählst du die Anzahl der Optionen in einem ausgewählten DOM-Element mithilfe von jQuery.Zählen der Anzahl der Options-Tags im Element "Select Dom" in JQuery

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

Wie die Anzahl der Optionen-Tag im select DOM-Element mit, dass da finde ich die Einstellungen Panel mit dieser Anzahl von Eingabefeldern mit dem entsprechenden Optionswert aus dem Dropdown-Feld in es öffnen möchten, und ändern es wieder in der Vorschauanzeige.

Wo die obige Dropdown-Box ist in meinem Vorschau-Panel, die von jQuery generiert wird.

Antwort

16

Ihre Frage ist ein wenig verwirrend, aber vorausgesetzt, Sie die Anzahl der Optionen in einem Panel angezeigt werden soll:

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

und

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

Nicht sicher verstehe ich den Rest Ihrer Frage.

47

Die W3C-Lösung:

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

Eine Variante dieser Methode mit mo dern javascript wird sein 'var len = document.querySelector (" # input1 "). length;' –

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

Das 2.

Hier ist die Arbeits Fiddle

+90

Verwenden Sie stattdessen die Länge. Aus der Dokumentation: "Die Methode .size() entspricht funktionell der Eigenschaft .length; die Eigenschaft .length wird jedoch bevorzugt, da sie nicht den Overhead eines Funktionsaufrufs aufweist." – Lee

+7

** Warnung: ** "[Die' .size() 'Methode ist seit jQuery 1.8 veraltet. Verwenden Sie stattdessen die' .length' Eigenschaft.] (Https://api.jquery.com/size/) ". – Pang

+0

Perfekt! .. Ist die veraltete Warnung so wichtig? Oder einfach veraltet? – toha

5

Ok produzieren, hatte ich ein paar Probleme, weil ich in einem

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

Ich hatte mehrere Seiten in meiner Seite, deshalb habe ich eine Klasse benutzt.

Mein Dropdown wurde automatisch von einem Ajax-Request gefüllt, wenn ich es angeklickt, so hatte ich nur das Element $ (this)

so ...

ich tun musste:

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

In einem Mehrfachauswahlfeld können Sie $('#input1 :selected').length; verwenden, um die Anzahl der ausgewählten Optionen abzurufen. Dies kann nützlich sein, um Schaltflächen zu deaktivieren, wenn eine bestimmte Mindestanzahl von Optionen nicht erfüllt ist.

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

Ich fand das nach dem Entfernen der geschweiften Klammern '$ ('# input1: selected'). Length;' unterstützende Dokumentation https://api.jquery.com/length/ –

18

können Sie entweder length Eigenschaft und length ist besser perfomance verwenden dann size.

$('#input1 option').length; 

oder Sie können size Funktion wie

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

Demo

1

Die beste Form verwenden ist diese

$('#example option').length 
Verwandte Themen