Chosen: Ausgewählt: bereit, nicht feuern

Erstellt am 3. Apr. 2014  ·  14Kommentare  ·  Quelle: harvesthq/chosen

Ich kann Chosen: nicht zum Feuern bringen, kann jemand bestätigen, ob diese Verwendung richtig oder falsch ist?

jQuery('.chzn-select').on(' selected :ready ', function () {
jQuery('li').ScrollText();
});

".chzn-select" ist die ausgewählte Klasse, die vor diesem Code gebunden ist.

Danke

Hilfreichster Kommentar

Ich bin auch auf ein Problem gestoßen, bei dem selected:ready nicht ausgelöst wurde.

Das hat nicht funktioniert:

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

aber das Binden des Ereignisses vor dem Instanziieren von selected hat funktioniert:

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

Alle 14 Kommentare

Ich vermute, Sie binden Ihren Listener einfach zu spät (wenn Sie ihn binden, nachdem die Auswahl fertig ist, wird er das Ereignis nicht sehen). Versuchen Sie, den Listener zu binden, bevor Sie die Auswahl anwenden

Ah, das war ein Teil der Lösung. Es gab auch eine Zeile, die alle Ereignisse von der Auswahl befreite, bevor sie eingerichtet wurde, wodurch sie entfernt wurde. Ich glaube, die Unbind-Zeile wurde aufgrund von Verrücktheiten in asp.net und Postbacks hinzugefügt.

Danke für die schnelle Antwort.

Geschlossen. :+1:

Entschuldigung noch eine Sache, ich sollte in der Lage sein, das ausgewählte Objekt in dieser Funktion wie unten zu bekommen, ist das richtig?

jQuery('.chzn-select').on(' ausgewählt:bereit ', Funktion (ausgewählt) {
jQuery('li').ScrollText();
});

Ich freue mich darauf, das neue Element zu bekommen und etwas damit zu tun, wenn ich fertig bin. Enthält das gewählte Objekt diese? Ich sehe, dass das obj ein Ergebnis hat, aber das ist immer undefiniert.

Okay, ich schließe das hier wieder.

Ich habe herausgefunden, dass das niemals funktionieren wird. Da ich ein Ereignis auf jede Option in der ausgewählten Dropdown-Liste anwenden möchte, besteht das Problem darin, dass die Optionen erst erstellt werden, wenn auf die Dropdown-Liste geklickt wird. Daher könnte ich meinen Code möglicherweise in das Ereignis " selected:showing_dropdown " verschieben.

Das erste Argument des Ereignis-Listeners ist immer das Ereignisobjekt. Die Parameter sind das zweite Argument: http://harvesthq.github.io/chosen/options.html#triggered -events

Ah, ich habe den zweiten Parameter verpasst. Danke.

Sie sollten Ihre Ereignisse mithilfe der Delegation binden (wie das veraltete $().live() ), da die Elemente dann beim Binden nicht auf der Seite vorhanden sein müssen:

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

Mehr zur Ereignisdelegation hier: https://learn.jquery.com/events/event-delegation/

Ich bin auch auf ein Problem gestoßen, bei dem selected:ready nicht ausgelöst wurde.

Das hat nicht funktioniert:

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

aber das Binden des Ereignisses vor dem Instanziieren von selected hat funktioniert:

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

Das Ereignis wird ausgelöst. Aber im ersten Fall wurde Ihr Listener wahrscheinlich registriert, nachdem er ausgelöst wurde

@stof Gute Klarstellung, danke.

Ich frage mich nur, aber warum werden die Listenelemente im Ereignis "showing_dropdown" und nicht im Ereignis "bereit" erstellt?

Die Listenelemente werden nicht im chosen:showing_dropdown erstellt.

chosen:ready wird ausgelöst, wenn die Ergebnisse erstellt werden und Chosen bereit ist, Ereignisse zu empfangen, chosen:showing_dropdown wird nach dem Öffnen von Chosen ausgelöst.

Worüber wundern Sie sich also? ;)

Meine Liste „Ausgewählte Ergebnisse“ ist immer leer, bis ich das Dropdown-Menü zum Öffnen auslöse. Ich fand einen anderen Weg, das zu tun, was ich tat, war aber nur ein wenig neugierig darauf, wie das funktionierte.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen