Question

J'ai constaté que l'utilisation de Complétion automatique jQuery comme la première fonction de votre script empêche d'autres fonctions. d'être exécuté.

Les deuxième et troisième fonctions ci-dessous ne fonctionneront pas:

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

Cependant, si je déplace la complétion automatique au bas de la page, l'autre script fonctionne, mais pas la complétion automatique.

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

Quelqu'un a-t-il rencontré des problèmes similaires avec jQuery Autocomplete ?

Était-ce utile?

La solution

jQuery doit exécuter tous vos gestionnaires $ (function () ...) dans l'ordre dans lequel ils ont été déclarés sans problème. Il semble que vos appels à autocomplete et à suggèrent sont les coupables.

jQuery est extrêmement prudent en ce qui concerne les gestionnaires d’événements. Si vous essayez de faire une opération similaire à celle décrite ci-dessus avec les gestionnaires de clics, vous remarquerez qu’ils s’exécutent également en séquence (au lieu de s’écraser). Essayez-le:

Supposons que certains éléments soient marqués comme suit:

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

... et le JavaScript

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

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

Trois boîtes d’alerte apparaissent dans l’ordre suivant: "Moi d’abord!", " " 1, " et "2."

jQuery fait un effort supplémentaire pour conserver vos gestionnaires onclick marqués en tant que première fonction sur laquelle cliquer lorsque l'événement se produit. Il est donc très sûr d’utiliser cette bibliothèque avec une technologie côté serveur, telle que ASP.NET, qui arrose les gestionnaires onclick partout.

Pour supprimer tous les gestionnaires d'événements de clic attribués par jQuery d'un élément, procédez comme suit:

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

N'oubliez pas que cela ne supprime pas le gestionnaire de clics attribué d'une autre manière (c'est-à-dire l'attribut onclick dans le balisage).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top