por error utilicé attr () en mi publicación inicial, quise decir data () pero me devuelve 'indefinido'.
userBG
66
Acabo de encontrar esto y me pregunto si el primer método es el preferido debido a razones de rendimiento u otra razón. @JordanBrown
Clarkey
1
@Clarkey, supongo que data () es más rápido que attr () porque attr () tiene que hacer un trabajo adicional para determinar qué tipo de atributo es. Solo una suposición aunque.
Su suscriptor de cambio se suscribe al evento de cambio de select, por lo que el thisparámetro es el elemento select. Debe encontrar el elemento secundario seleccionado para obtener el ID de datos.
Siempre intente apoyar su bloque de código publicado con explicaciones y / o referencias (incluso si la solución es simple / "autoexplicativa") en StackOverflow porque no todos están familiarizados con la sintaxis / comportamiento / rendimiento de un idioma determinado.
Siempre intente apoyar su bloque de código publicado con explicaciones y / o referencias (incluso si la solución es simple / "autoexplicativa") en StackOverflow porque no todos están familiarizados con la sintaxis / comportamiento / rendimiento de un idioma determinado.
mickmackusa
5
Puede usar la contextsintaxis con thiso $(this). Este es el mismo efecto que find().
$('select').change(function(){
console.log('Clicked option value => '+ $(this).val());<!--undefined console.log('$(this) without explicit :select => '+ $(this).data('id'));--><!-- error console.log('this without explicit :select => '+this.data('id'));-->
console.log(':select & $(this) => '+ $(':selected', $(this)).data('id'));
console.log(':select & this => '+ $(':selected',this).data('id'));
console.log('option:select & this => '+ $('option:selected',this).data('id'));
console.log('$(this) & find => '+ $(this).find(':selected').data('id'));});
Como cuestión de microoptimización, puede optar por find(). Si usted es más un jugador de código, la sintaxis de contexto es más breve. Se reduce básicamente al estilo de codificación.
Siempre intente apoyar su bloque de código publicado con explicaciones y / o referencias (incluso si la solución es simple / "autoexplicativa") en StackOverflow porque no todos están familiarizados con la sintaxis / comportamiento / rendimiento de un idioma determinado.
mickmackusa
El OP no tiene un idatributo en el elemento select (y no lo necesita debido a la utilidad de this).
Siempre intente apoyar su bloque de código publicado con explicaciones y / o referencias (incluso si la solución es simple / "autoexplicativa") en StackOverflow porque no todos están familiarizados con la sintaxis / comportamiento / rendimiento de un idioma determinado.
Respuestas:
Necesita encontrar la opción seleccionada:
o
aunque se prefiere el primer método.
fuente
Intenta lo siguiente:
Su suscriptor de cambio se suscribe al evento de cambio de select, por lo que el
this
parámetro es el elemento select. Debe encontrar el elemento secundario seleccionado para obtener el ID de datos.fuente
find()
es mucho más rápido quechildren()
incluso en casos como este donde solo tenemos una profundidad de árbol de 2.fuente
Javascript de vainilla:
fuente
Puede usar la
context
sintaxis conthis
o$(this)
. Este es el mismo efecto quefind()
.Como cuestión de microoptimización, puede optar por
find()
. Si usted es más un jugador de código, la sintaxis de contexto es más breve. Se reduce básicamente al estilo de codificación.Aquí hay una comparación de rendimiento relevante .
fuente
fuente
id
atributo en el elemento select (y no lo necesita debido a la utilidad dethis
).esto funciona para mi
y el guión
fuente