2009-07-20 12 views
136

Cómo contar la cantidad de opciones en un elemento DOM seleccionado usando jQuery.Contando el número de etiquetas de opciones en el elemento Seleccionar Dom en JQuery

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

¿Cómo encontrar el número de etiqueta de opciones en el elemento select DOM ya que con que yo quiero abrir el panel de configuración con ese número de campos de entrada con el valor de la opción correspondiente en el cuadro desplegable en ella y cambiar de nuevo en el panel Vista previa.

Donde el cuadro desplegable de arriba está en mi panel de vista previa que es generado por jQuery.

Respuesta

16

Su pregunta es un poco confuso, pero suponiendo que desea mostrar el número de opciones en un panel:

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

y

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

No estoy seguro de entender el resto de su pregunta.

47

La solución del W3C:

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

Una variación de este método con mo dern javascript será 'var len = document.querySelector (" # input1 "). length;' –

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

Esto producirá 2.

Aquí está el trabajo Fiddle

+90

Use la longitud en su lugar. De los documentos: "El método .size() es funcionalmente equivalente a la propiedad .length; sin embargo, se prefiere la propiedad .length porque no tiene la sobrecarga de una llamada a función". – Lee

+7

** Advertencia: ** "[El método' .size() 'está en desuso a partir de jQuery 1.8. Use la propiedad' .length' en su lugar.] (Https://api.jquery.com/size/) ". – Pang

+0

¡Perfecto! ... ¿Es la advertencia obsoleta tan importante? ¿O simplemente desaprobado? – toha

5

Ok, he tenido algunos problemas porque yo estaba dentro de un

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

Tenía muchos dentro de mi página y por eso utilicé una clase.

Mi desplegables se llena automáticamente por una petición ajax cuando hace clic en él, así que sólo tenía el elemento $ (this)

así que ...

que tenía que hacer:

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

En un cuadro de opción de selección múltiple, puede usar $('#input1 :selected').length; para obtener el número de opciones seleccionadas. Esto puede ser útil para desactivar botones si no se cumple un cierto número mínimo de opciones.

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

He encontrado que esto funciona después de quitar las llaves '$ ('# input1: selected'). Length;' documentación de respaldo https://api.jquery.com/length/ –

18

Puede utilizar cualquiera length propiedad y length es mejor performance a continuación size.

$('#input1 option').length; 

o puede utilizar size función como

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

Demo

1

La mejor forma es esta

$('#example option').length 
Cuestiones relacionadas