Chosen: Escolhido: pronto não disparando

Criado em 3 abr. 2014  ·  14Comentários  ·  Fonte: harvesthq/chosen

Não consigo escolher Chosen:pronto para disparar, alguém pode confirmar se esse uso está certo ou errado?

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

".chzn-select" é a classe escolhida antes deste código.

Obrigado

Comentários muito úteis

Também me deparei com um problema em que o escolhido: pronto não estava disparando.

Isso não funcionou:

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

mas vincular o evento antes de instanciar escolhido funcionou:

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

Todos 14 comentários

Eu acho que você está simplesmente vinculando seu ouvinte tarde demais (se você o vincular depois que o escolhido estiver pronto, ele não verá o evento). Tente vincular o ouvinte antes de aplicar escolhido

Ah, isso era parte da solução. havia também uma linha desvinculando todos os eventos escolhidos antes de configurá-lo, o que o removia. Eu acredito que a linha unbind foi adicionada devido à estranheza no asp.net e nos postbacks.

Obrigado pela resposta rápida.

Fechado. :+1:

Desculpe outra coisa, eu deveria ser capaz de obter o objeto escolhido nesta função como abaixo, está correto?

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

Estou procurando obter o novo elemento e fazer algo com ele quando estiver pronto. O objeto escolhido contém isso? Vejo que o obj tem um resultado porém isso é sempre indefinido.

Ok, estou fechando novamente.

Eu descobri que isso nunca vai funcionar. Como desejo aplicar um evento a cada opção no menu suspenso escolhido, no entanto, o problema é que as opções não são criadas até que o menu suspenso seja clicado. Portanto, eu poderia mover meu código para o evento " choosed:showing_dropdown ".

o primeiro argumento do ouvinte de eventos é sempre o objeto de evento. Os parâmetros são o segundo argumento: http://harvesthq.github.io/chosen/options.html#triggered -events

ah eu perdi o segundo parâmetro. Obrigado.

Você deve vincular seus eventos usando delegação (como o obsoleto $().live() ), porque os elementos não precisam estar presentes na página ao vincular:

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

Mais sobre delegação de eventos aqui: https://learn.jquery.com/events/event-delegation/

Também me deparei com um problema em que o escolhido: pronto não estava disparando.

Isso não funcionou:

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

mas vincular o evento antes de instanciar escolhido funcionou:

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

o evento está disparando. Mas no primeiro caso, seu ouvinte provavelmente foi registrado após ser acionado

@stof Bom esclarecimento, obrigado.

Apenas imaginando, mas por que os itens da lista são criados no evento "showing_dropdown" em vez do evento "ready"?

Os itens da lista não são criados no chosen:showing_dropdown .

chosen:ready é acionado quando os resultados são construídos e Escolhido está pronto para receber eventos, chosen:showing_dropdown é acionado após a abertura de Escolhido.

Então, o que é que você está se perguntando? ;)

Minha lista de "Resultados escolhidos" está sempre vazia até que eu acione o menu suspenso para abrir. Encontrei outra maneira de fazer o que estava fazendo, mas estava um pouco curioso sobre como isso estava funcionando.

Esta página foi útil?
0 / 5 - 0 avaliações