Pergunta

Descobri que usando declarando jQuery Autocomplete como a primeira função em seus impede de script outras funções de ser executado.

A segunda e terceira funções abaixo não funcionará:

<script>
$(function() {
    $("#ent_input").autocomplete('get_suggestions', 
        {autoFill: true, scroll: false});
});

    // Freebase Suggest
$(function() {
    $("#ent_input_fb").suggest({type:'/film/director'});
});

$(function() {
    $("#ent_input_fb2").suggest({type:'/film/actor'});
});
</script>

No entanto, se eu mover autocomplete para o fundo, as outras obras de script, mas autocomplete não.

<script>
    // Freebase Suggest
$(function() {
    $("#ent_input_fb").suggest({type:'/film/director'});
});

$(function() {
    $("#ent_input_fb2").suggest({type:'/film/actor'});
});

    $(function() {
    $("#ent_input").autocomplete('get_suggestions', 
        {autoFill: true, scroll: false});
});
</script>

Tem alguém correr em quaisquer problemas semelhantes com jQuery Autocomplete ?

Foi útil?

Solução

jQuery deve executar todos os seus manipuladores $(function()...) na ordem em que foram declaradas sem problema. Parece que as suas chamadas para autocomplete e suggest são os culpados.

jQuery é extremamente cauteloso sobre manipuladores de eventos, e se você tentou fazer algo semelhante ao anterior com manipuladores clique você vai notar que eles também executar em sequência (em vez de substituir uns aos outros). Experimente:

Suponha someElement marcado como segue:

<span id="someElement" onclick="alert('Me First!');" />

... eo JavaScript

$("#someElement").click
(
  function()
  {
    alert("1");
  }
);

$("#someElement").click
(
  function()
  {
    alert("2");
  }
);

Você verá três caixas de alerta apresentados na seguinte ordem:. "Eu primeiro !," "1" e "2"

jQuery vai a milha extra para reter seus marcaram os manipuladores onclick como a primeira função de clicar quando o evento ocorrer. Isto torna muito seguro para usar esta biblioteca com tecnologia do lado do servidor, como ASP.NET, que borrifa manipuladores onclick em todo o lugar.

Para remover todos os manipuladores de eventos de clique jQuery-atribuídos a partir de um elemento, faça o seguinte:

$("#someElement").unbind("click");

Tenha em mente que isso não remover um manipulador de clique atribuído alguma outra forma (ou seja, o atributo onclick na marcação).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top