2012-05-03 11 views
5

tengo un multi seleccione desplegable por ejemplo:opción Obtener hecho clic en el menú desplegable múltiple

<select id="myList" multiple="multiple"> 
    <option value="1">Opt #1</option> 
    <option value="2" selected="selected">Opt #2</option> 
    <option value="3" selected="selected">Opt #3</option> 
    <option value="4">Opt #4</option> 
</select> 

Si selecciona entonces Opt #4, ¿cómo entonces sólo consigo Opt #4 y no Opt #2 y Opt #3? Sé que puedo obtener todas las opciones seleccionadas por el presente:

var selectedOptions = $("#myList option:selected"); 

Sin embargo sólo quiero la opción chasqué - Opt #4. es posible?

Editar: tenga en cuenta que cuando manipulo la lista dentro de un evento change no puedo hacerlo en un evento click. También se agregó el múltiplo perdido.

+0

¿Qué quieres lograr? Si desea obtener la opción "hacer clic", ¿por qué es una selección múltiple? – MatuDuke

+2

¿Echas de menos agregar el atributo 'multiple' para seleccionar la etiqueta? –

+0

Te has perdido el atributo 'mulitple =" multiple "' de tu 'select'. Aparte de eso, debería funcionar. – phuzi

Respuesta

7

Se puede conseguir en el controlador de clic para cada elemento de opción:

$("#myList option").click(function() { 
    var clickedOption = $(this); 
}); 

actualización

EDIT: Como ya manipular la lista dentro de un evento de cambio, que pueda No lo hagas en un evento de clic.

En ese caso debe delegar el evento usando on. Pruebe esto:

$("#myList").on("click", "option", function() { 
    var clickedOption = $(this); 
}); 
+0

Esto agregará un único controlador de eventos a cada opción. Si alguna vez agregó opciones después de llamar a esto, las nuevas opciones no funcionarán como se esperaba. Mire mi solución sobre cómo evitar este problema. –

+0

Olvidé mencionar que manipulo la lista dentro de un evento de cambio, por lo que no puedo hacerlo en un evento de clic. – Frets

+0

@Frets no hay problema, verifique mi actualización. –

1

Como usted sabe, si el usuario hizo clic en opt # 4 sin presionar la tecla Cntrl, entonces solo obtendrá Opt # 4 como opción seleccionada.

Si el usuario hizo clic en opt # 4 con la tecla Cntrl presionada, se seleccionarán las tres opciones. Entonces las tres opciones serán devueltas. Si solo desea Opt # 4, entonces deberá agregar un controlador de eventos click.

1

¿Algo como lo siguiente le puede ayudar?

$('#myList').delegate('option', 'click', function (opt) { 
    alert('Option ' + opt.value + ' was clicked'); 
}); 
Cuestiones relacionadas