¿Qué significa la sintaxis $ ("selector", esto)? Tengo una idea general, pero no estoy totalmente seguro
JoshWillik
14
@JoshWillik con $("selector", this)usted está encontrando todos los selectorelementos dentro thisdel contexto. Escribir $("selector", this)es casi lo mismo que $(this).find('selector')
Bellash
8
@JoshWillik: como $()es un alias de jQuery(), puede encontrar la documentación aquí: api.jquery.com/jQuery La firma indicada allí es obviamente jQuery( selector [, context ] ). @Bellash: si es "casi lo mismo", ¿cuál es la diferencia? ¿O qué es más rápido? Prefiero .find()ya que esto es más OO IMO ...
Adrian Föder
77
¿Cómo verificar en caso de selección múltiple?
Hemant_Negi
3
@ AdrianFöder Para usted y otras personas que lo buscan, .find()es aproximadamente un 10% más rápido según esta respuesta: stackoverflow.com/a/9046288/2767703
La solución anterior funciona perfectamente, pero elijo agregar el siguiente código para ellos dispuestos a obtener la opción de hacer clic. Le permite obtener la opción seleccionada incluso cuando este valor seleccionado no ha cambiado. (Probado solo con Mozilla)
La vinculación a optioneventos es una propuesta arriesgada, especialmente en dispositivos móviles. Por ejemplo, Webkit no admite este evento correctamente: bugs.chromium.org/p/chromium/issues/detail?id=5284
Ian Kemp
¡Está bien! Como dije, ¡la segunda solución no es compatible con muchos navegadores!
Bellash
15
Alternativa delegada
En caso de que alguien esté usando el enfoque delegado para su oyente, úselo e.target(se referirá al elemento select).
$('#myform').on('change','select',function(e){var val = $(e.target).val();var text = $(e.target).find("option:selected").text();//only time the find is requiredvar name = $(e.target).attr('name');}
selectedOptionsno está disponible en todos los navegadores.
Bernhard Döbler
@ BernhardDöbler, ¿cuáles? alguna fuente?
1.44mb
1
Copié tu código a IE 11 y recibí un error. Terminé con this.options[ this.options.selectedIndex ]. Mozilla dice que es compatible con Firefox desde 26, IE Sin soporte.
Bernhard Döbler
6
<selectid="selectId"><optionvalue="A">A</option><optionvalue="B">B</option><optionvalue="C">C</option></select>
$('#selectId').on('change', function () {
var selectVal = $("#selectId option:selected").val();
});
Primero crea a select option. Después de ese uso jquery, puede obtener el valor seleccionado actual cuando el usuario cambia el select optionvalor.
si este es el caso, ¿por qué no "var selectedVal = $ (" # selectElement "). val ()" work¿
LuisE
El caso está obteniendo valor cuando se produce un evento de cambio en el elemento seleccionado. El valor no se actualizará cuando seleccione cambios si le gusta.
Respuestas:
fuente
$("selector", this)
usted está encontrando todos losselector
elementos dentrothis
del contexto. Escribir$("selector", this)
es casi lo mismo que$(this).find('selector')
$()
es un alias dejQuery()
, puede encontrar la documentación aquí: api.jquery.com/jQuery La firma indicada allí es obviamentejQuery( selector [, context ] )
. @Bellash: si es "casi lo mismo", ¿cuál es la diferencia? ¿O qué es más rápido? Prefiero.find()
ya que esto es más OO IMO ....find()
es aproximadamente un 10% más rápido según esta respuesta: stackoverflow.com/a/9046288/2767703Puedes usar el método de búsqueda jQuery
La solución anterior funciona perfectamente, pero elijo agregar el siguiente código para ellos dispuestos a obtener la opción de hacer clic. Le permite obtener la opción seleccionada incluso cuando este valor seleccionado no ha cambiado. (Probado solo con Mozilla)
fuente
option
eventos es una propuesta arriesgada, especialmente en dispositivos móviles. Por ejemplo, Webkit no admite este evento correctamente: bugs.chromium.org/p/chromium/issues/detail?id=5284Alternativa delegada
En caso de que alguien esté usando el enfoque delegado para su oyente, úselo
e.target
(se referirá al elemento select).JSFiddle Demo
fuente
Esto me parece más corto y más limpio. Además, puede recorrer los elementos seleccionados si hay más de uno;
fuente
selectedOptions
no está disponible en todos los navegadores.this.options[ this.options.selectedIndex ]
. Mozilla dice que es compatible con Firefox desde 26, IE Sin soporte.Primero crea a
select option
. Después de ese usojquery
, puede obtener el valor seleccionado actual cuando el usuario cambia elselect option
valor.fuente
fuente
Otra forma corta de obtener el valor del valor seleccionado,
fuente
Consulte la documentación oficial de la API https://api.jquery.com/selected-selector/
Esto funciona bien:
y
y ser fácil para una elección única
fuente
Puede usar este evento jquery select change para obtener el valor de la opción seleccionada
Para demostración
fuente