質問

宣言する jQuery Autocomplete をスクリプトの最初の関数として使用すると、他の関数が妨げられることがわかりました実行から。

以下の2番目と3番目の機能は動作しません:

<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オートコンプリートで同様の問題に遭遇しましたか?

役に立ちましたか?

解決

jQueryはすべての $(function()...)ハンドラーを問題なく宣言された順序で実行する必要があります。 autocomplete suggest の呼び出しが原因であるようです。

jQueryはイベントハンドラーに対して非常に慎重であり、クリックハンドラーで上記と同様のことを行おうとすると、それらが(互いに上書きするのではなく)順番に実行されることに気付くでしょう。試してみてください:

次のようにsomeElementがマークアップされていると仮定します:

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

...およびJavaScript

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

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

次の順序で3つのアラートボックスが表示されます:&quot; Me First!、&quot; &quot; 1、&quot;および&quot; 2.&quot;

jQueryは、イベントが発生したときにクリックする最初の関数として、マークアップされたonclickハンドラーを保持するためにさらに努力します。これにより、ASP.NETのようなサーバーサイドテクノロジーでこのライブラリを使用することが非常に安全になります。

jQueryによって割り当てられたすべてのクリックイベントハンドラーを要素から削除するには、次の手順を実行します。

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

他の方法(つまり、マークアップのonclick属性)が割り当てられたクリックハンドラーは削除されないことに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top