2010-03-18 20 views
25

tengo menu..which desplegable es dinámico .. ¿Cómo se puede obtener el valor del último elemento de ese menú desplegable (usando jQuery también es aceptable)¿Obtiene el valor de la última opción de un menú desplegable?

+2

¿Qué quiere decir con "menú desplegable"? ¿Estás usando JavaScript para crear un efecto de menú desplegable? Si es así, ¿puede decirnos qué script está usando? –

+0

+1 - Estoy totalmente de acuerdo contigo @TobiasCohen: "¿qué pruebas? ¿Qué conseguiste? ¿Qué esperabas obtener?" –

Respuesta

59

con jQuery Es super fácil:

var lastValue = $('#idOfSelect option:last-child').val(); 

Con llanura Javascript que no es mucho peor:

var theSelect = document.getElementById('idOfSelect'); 
var lastValue = theSelect.options[theSelect.options.length - 1].value; 
+3

+1 para hacer referencia al Javascript "under the covers" – Robusto

8

con jQuery:

$('select option:last').val() 

Por supuesto que debiera use una identificación adecuada para abordar el elemento select.

Si se refiere a "menú" que llama de una lista, puede hacerlo similar:

// gives the text inside the last <li> element 
$('#menu li:last').text() 

// gives you the attribute 'some_attribute' of the last <li> element 
$('#menu li:last').attr('some_attribute') 

La clave aquí es utilizar el selector :last.

+0

$ ('select option: last'). Val() no funciona ... respuesta dada por pointy está trabajando .. var lastValue = $ ('# idOfSelect opción: last-child'). Val() ; ¿Puedes descubrir por qué nuestro código no funciona ... En caso de que tu código sea indefinido ... –

+0

@piemesons: No lo sé, funciona para mí ... Pero me doy cuenta de que ': last- child' podría ser de hecho mejor. –

3

una forma más de hacer esto

$('select option').last().val() 

o para la lista

$('ul li').last().text() 

Si bien las dos sugerencias anteriores son perfectamente válidas, creo que este enfoque es más claro que la modificación del selector.

Offcourse debe agregar id/class de select/ul específico si desea enfocar el menú/lista en particular.

+1

Esto seleccionará todos los elementos, luego creará otra lista que contenga el último elemento; por lo tanto, tener el último como parte del selector es marginalmente más eficiente. –

+0

@JamesWestgate Mi sugerencia fue hecha para evitar el selector de psuedo: last-child, ya que estos son más lentos. También hice editar sugiriendo usar id/class para apuntar a un menú/lista específico si ese es el objetivo. Gracias. –

+0

: last-child es un selector de css3, por lo que sería mejor que lo pusiera en un selector. Eso pasará directamente a QuerySelectorAll y el navegador se ocupará de eso, en lugar de hacer dos consultas separadas y listas de elementos ... –

0

Utilizando el atributo seleccionado.

$('#SelectName option:last-child').attr('selected', 'selected'); 
0

$('#id_of_select option:last-of-type').click();

O

$('#id_of_select option:last-child').click();

Ambos deben encontrar y haga clic en la última opción en ninguna lista desplegable dinámica.

Cuestiones relacionadas