Chosen: Elegido: listo para no disparar

Creado en 3 abr. 2014  ·  14Comentarios  ·  Fuente: harvesthq/chosen

Parece que no puedo obtener Chosen: listo para disparar, ¿alguien puede confirmar si este uso es correcto o incorrecto?

jQuery('.chzn-select').on(' elegido:listo ', función () {
jQuery('li').ScrollText();
});

".chzn-select" es la clase que se elige antes de este código.

Gracias

Comentario más útil

También me encontré con un problema en el que se eligió: listo no estaba disparando.

Esto no funcionó:

$('select')
    .chosen()
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    });

pero vincular el evento antes de crear una instancia elegida funcionó:

$('select')
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    })
    .chosen();

Todos 14 comentarios

Supongo que simplemente está vinculando a su oyente demasiado tarde (si lo vincula después de que el elegido esté listo, no verá el evento). Intente vincular al oyente antes de aplicar el elegido

Ah, eso era parte de la solución. también había una línea que desvinculaba todos los eventos de los elegidos antes de configurarlo, lo que lo eliminaba. Creo que la línea de desvinculación se agregó debido a la rareza en asp.net y las devoluciones de datos.

Gracias por la pronta respuesta.

Cerrado. :+1:

Disculpe otra cosa, debería poder obtener el objeto elegido en esta función como se muestra a continuación, ¿es correcto?

jQuery('.chzn-select').on(' elegido:listo ', función (elegido) {
jQuery('li').ScrollText();
});

Estoy buscando obtener el nuevo elemento y hacerle algo cuando esté listo. ¿El objeto elegido contiene esto? Veo que el obj tiene un resultado, sin embargo, esto siempre está indefinido.

Está bien, estoy cerrando esto de nuevo.

Me di cuenta de que esto nunca funcionará. Como deseo aplicar un evento a cada opción en el menú desplegable elegido, sin embargo, el problema es que las opciones no se crean hasta que se hace clic en el menú desplegable. Por lo tanto, posiblemente podría mover mi código al evento " elegido: mostrando_desplegable ".

el primer argumento del detector de eventos siempre es el objeto de evento. Los parámetros son el segundo argumento: http://harvesthq.github.io/chosen/options.html#triggered -events

ah me perdí el segundo parámetro. Gracias.

Debe enlazar sus eventos usando delegación (como el obsoleto $().live() ), porque entonces los elementos no tienen que estar presentes en la página cuando se enlazan:

$('.chosen-select').on('click', 'li', handlerFunction);

Más información sobre la delegación de eventos aquí: https://learn.jquery.com/events/event-delegation/

También me encontré con un problema en el que se eligió: listo no estaba disparando.

Esto no funcionó:

$('select')
    .chosen()
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    });

pero vincular el evento antes de crear una instancia elegida funcionó:

$('select')
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    })
    .chosen();

el evento se dispara. Pero en el primer caso, su oyente probablemente se registró después de que se activó

@stof Buena aclaración, gracias.

Solo me preguntaba, pero ¿por qué los elementos de la lista se crean en el evento "showing_dropdown" en lugar del evento "ready"?

Los elementos de la lista no se crean en chosen:showing_dropdown .

chosen:ready se activa cuando se crean los resultados y Chosen está listo para recibir eventos, chosen:showing_dropdown se activa después de abrir Chosen.

Entonces, ¿qué es lo que te estás preguntando? ;)

Mi lista de "Resultados elegidos" siempre está vacía hasta que active el menú desplegable para que se abra. Encontré otra forma de hacer lo que estaba haciendo, pero tenía un poco de curiosidad sobre cómo funcionaba esto.

¿Fue útil esta página
0 / 5 - 0 calificaciones