Chosen: Choisi : prêt à ne pas tirer

Créé le 3 avr. 2014  ·  14Commentaires  ·  Source: harvesthq/chosen

Je n'arrive pas à être choisi : prêt à tirer, quelqu'un peut-il confirmer si cette utilisation est bonne ou mauvaise ?

jQuery('.chzn-select').on(' choisi:prêt ', fonction() {
jQuery('li').ScrollText();
});

".chzn-select" est la classe choisie qui est liée avant ce code.

Merci

Commentaire le plus utile

J'ai également rencontré un problème où choisi: prêt ne tirait pas.

Cela n'a pas fonctionné :

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

mais la liaison de l'événement avant l'instanciation de choisi a fonctionné:

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

Tous les 14 commentaires

Je suppose que vous liez simplement votre auditeur trop tard (si vous le liez après que choisi soit prêt, il ne verra pas l'événement). Essayez de lier l'auditeur avant d'appliquer choisi

Ah, ça faisait partie de la solution. il y avait aussi une ligne dissociant tous les événements de choisi avant de le configurer, ce qui l'a supprimé. Je crois que la ligne unbind a été ajoutée en raison de l'étrangeté d'asp.net et des postbacks.

Merci pour la réponse rapide.

Fermé. :+1:

Désolé une autre chose, je devrais pouvoir obtenir l'objet choisi dans cette fonction comme ci-dessous, est-ce correct ?

jQuery('.chzn-select').on(' choisi:prêt ', fonction (choisi) {
jQuery('li').ScrollText();
});

Je cherche à obtenir le nouvel élément et à faire quelque chose quand il sera prêt. L'objet choisi en contient-il ? Je vois que l'obj a un résultat mais c'est toujours indéfini.

Bon, je referme ça.

J'ai compris que ça ne marchera jamais. Comme je souhaite appliquer un événement à chaque option dans la liste déroulante choisie, le problème est que les options ne sont pas créées tant que la liste déroulante n'est pas cliqué. Par conséquent, je pourrais éventuellement déplacer mon code dans l'événement " selected:showing_dropdown ".

le premier argument de l'écouteur d'événement est toujours l'objet événement. Les paramètres sont le deuxième argument : http://harvesthq.github.io/chosen/options.html#triggered -events

ah j'ai raté le deuxième paramètre. Merci.

Vous devez lier vos événements à l'aide de la délégation (comme l'obsolète $().live() ), car les éléments n'ont pas besoin d'être présents dans la page lors de la liaison :

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

Plus d'informations sur la délégation d'événements ici : https://learn.jquery.com/events/event-delegation/

J'ai également rencontré un problème où choisi: prêt ne tirait pas.

Cela n'a pas fonctionné :

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

mais la liaison de l'événement avant l'instanciation de choisi a fonctionné:

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

l'événement se déclenche. Mais dans le premier cas, votre écouteur a probablement été enregistré après son déclenchement

@stof Bonne clarification, merci.

Je me demandais simplement, mais pourquoi les éléments de la liste sont-ils créés dans l'événement "showing_dropdown" plutôt que dans l'événement "ready" ?

Les éléments de la liste ne sont pas créés dans le chosen:showing_dropdown .

chosen:ready est déclenché lorsque les résultats sont construits et que Chosen est prêt à recevoir des événements, chosen:showing_dropdown est déclenché après l'ouverture de Chosen.

Alors, qu'est-ce que vous vous interrogez ? ;)

Ma liste "Chosen-Results" est toujours vide jusqu'à ce que je déclenche l'ouverture de la liste déroulante. J'ai trouvé une autre façon de faire ce que je faisais, mais j'étais juste un peu curieux de savoir comment cela fonctionnait.

Cette page vous a été utile?
0 / 5 - 0 notes