Несколько функций jQuery & amp; Автозаполнение
-
07-07-2019 - |
Вопрос
Я обнаружил, что использование объявления jQuery Autocomplete в качестве первой функции в вашем сценарии предотвращает другие функции от казни. Р>
Вторая и третья функции ниже не будут работать:
<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>
Однако, если я переместлю автозаполнение вниз, другой сценарий сработает, а автозаполнение - нет.
<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>
Кто-нибудь сталкивался с подобными проблемами с jQuery Autocomplete ?
Решение
jQuery должен выполнять все ваши обработчики $ (function () ...)
в том порядке, в котором они были объявлены без проблем. Похоже, что ваши вызовы autocomplete
и предложить
являются виновниками.
jQuery очень осторожен с обработчиками событий, и если вы попытались сделать что-то похожее с обработчиками щелчков, вы заметите, что они тоже выполняются последовательно (а не перезаписывают друг друга). Попробуйте:
Предположим, что someElement размечен следующим образом:
<span id="someElement" onclick="alert('Me First!');" />
... и JavaScript
$("#someElement").click
(
function()
{
alert("1");
}
);
$("#someElement").click
(
function()
{
alert("2");
}
);
Вы увидите три окна с предупреждениями, показанные в следующем порядке: " Me First!, " & Quot; 1, & Quot; и "2."
jQuery делает все возможное, чтобы сохранить размеченные обработчики onclick в качестве первой функции, которая щелкает при возникновении события. Это делает очень безопасным использование этой библиотеки с серверной технологией, такой как ASP.NET, которая разбрасывает обработчики onclick повсюду.
Чтобы удалить все назначенные jQuery обработчики событий клика из элемента, выполните следующие действия:
$("#someElement").unbind("click");
Помните, что это не удаляет обработчик кликов, назначенный другим способом (т. е. атрибут onclick в разметке).