JQuery'de bir seçim etiketindeki seçenek etiketlerinin sayısını sayma


159

JQuery kullanarak <option>bir <select>DOM öğesindeki s sayısını nasıl sayabilirim ?

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

DOM öğesindeki <option>etiket sayısını bulmak istiyorum <select>, çünkü bununla birlikte, açılan kutudaki karşılık gelen seçenek değerine sahip bu giriş alanlarıyla ayarlar panelini açmak ve önizlemede tekrar değiştirmek istiyorum panel.

Yukarıdaki açılır kutu jQuery tarafından oluşturulan önizleme panelimde.

Yanıtlar:



51

W3C çözümü:

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

5
Modern javascript ile bu yöntemin bir varyasyonu olacak var len = document.querySelector("#input1").length;
Jacob Nelson

22

Her iki length özelliğini de kullanabilirsiniz ve lengtho zaman daha iyi performans sağlar size.

$('#input1 option').length;

VEYA gibi boyut fonksiyonunu kullanabilirsiniz

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

gösteri


2
Bu, 2009'dan gelen yanıtların da sağlamadığı hiçbir şeyi sağlamaz.
TylerH

18

Sorunuz biraz kafa karıştırıcı, ancak bir paneldeki seçenek sayısını görüntülemek istediğinizi varsayarsak:

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

ve

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

Sorunuzun geri kalanını anladığımdan emin değilim.


14

Çoklu seçim seçenek kutusunda, $('#input1 :selected').length;seçilen seçeneklerin sayısını elde etmek için kullanabilirsiniz . Bu, minimum sayıda seçenek karşılanmadığında düğmeleri devre dışı bırakmak için yararlı olabilir.

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

$('#input1 :selected').length; Belgeleri destekleyen parantezleri kaldırdıktan sonra bunu buldum api.jquery.com/length
Leonard Kakande

6

Tamam, birkaç problemim vardı çünkü

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

Sayfanın içinde katlar vardı, bu yüzden bir sınıf kullandım.

Açılırken tıkladığımda ajax isteği tarafından otomatik olarak dolduruldu, bu yüzden sadece $ (this) öğesi vardı

yani...

Yapmak zorundaydım:

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

6

En iyi form bu

$('#example option').length

Bu sadece kodlu (düşük değerli) çözüm, 4 yıl önce Sadıkhasan tarafından sağlanmıştır. Kullanımı length9 yıl önce Karim79 tarafından yayınlanmıştır. Bu yanıt tamamen gereksiz olduğu için sayfadan güvenli bir şekilde temizlenebilir.
mickmackusa

-1

Yararlı olabilecek başka bir yaklaşım.

$('#select-id').find('option').length

1
Soru sadece seçilenlerin sayısını sormuyor <option>.
user4642212
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.