Domanda

Ho scoperto che l'uso della dichiarazione completamento automatico jQuery come prima funzione nello script impedisce altre funzioni dall'esecuzione.

La seconda e la terza funzione di seguito non funzioneranno:

<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>

Tuttavia, se sposto il completamento automatico in basso, l'altro script funziona, ma il completamento automatico no.

<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>

Qualcuno ha riscontrato problemi simili con Completamento automatico jQuery ?

È stato utile?

Soluzione

jQuery dovrebbe eseguire tutti i gestori $ (function () ...) nell'ordine in cui sono stati dichiarati senza problemi. Sembra che le tue chiamate a completamento automatico e suggeriscano siano i colpevoli.

jQuery è estremamente cauto nei confronti dei gestori di eventi, e se hai provato a fare qualcosa di simile a quanto sopra con i gestori di clic, noterai che anch'essi vengono eseguiti in sequenza (piuttosto che sovrascriversi). Provalo:

Supponi che someElement sia contrassegnato come segue:

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

... e JavaScript

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

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

Vedrai tre caselle di avviso mostrate nel seguente ordine: " Me First!, " & Quot; 1 " e " 2. "

jQuery fa il possibile per conservare i gestori onclick contrassegnati come la prima funzione a fare clic quando si verifica l'evento. Questo rende molto sicuro l'uso di questa libreria con tecnologia lato server come ASP.NET, che spruzza ovunque gestori onclick ovunque

Per rimuovere tutti i gestori di eventi click assegnati da jQuery da un elemento, procedere come segue:

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

Tieni presente che ciò non rimuove un gestore di clic assegnato in altro modo (ovvero l'attributo onclick nel markup).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top