我发现使用声明 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 suggest 的调用是罪魁祸首。

jQuery对事件处理程序非常谨慎,如果你尝试使用单击处理程序执行与上面类似的操作,你会注意到它们也按顺序执行(而不是相互覆盖)。试试吧:

假设someElement标记如下:

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

...和JavaScript

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

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

您将看到以下顺序显示的三个警告框:“我是第一个!”, &QUOT; 1,&QUOT;和“2.”

jQuery在保留您标记的onclick处理程序方面更加努力,作为事件发生时第一个单击的功能。这使得使用像ASP.NET这样的服务器端技术的库非常安全,它可以在整个地方使用onclick处理程序。

要从元素中删除所有jQuery分配的单击事件处理程序,请执行以下操作:

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

请记住,这不会删除以其他方式指定的点击处理程序(即标记中的onclick属性)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top