Molteplici funzioni jQuery e amp; Completamento automatico
-
07-07-2019 - |
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 ?
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).