2

要素に jquery UI オートコンプリートを簡単に配置できるように、次の便利な関数を作成しました。

jQuery.fn.bindAutocomplete = function() {
  $(this).each( function() {
    $(this).autocomplete({
      source: $(this).data('autocomplete-source')
    });
  });
}

私は常に要素にアタッチするという規則を使用しているdata-autocomplete-sourceので、どこでもこれを呼び出すことができます:

$('input#name').bindAutocomplete();

現在、オートコンプリート関数は、オプション ハッシュの後にオプションの引数としてコールバック関数を受け取ることができます。私はそれをいじる必要はほとんどありませんが、少数のインスタンスで成功関数を渡したいことがわかりました。明らかに、コールバックを渡す必要がある場合は完全なオートコンプリート関数を書き直すbindAutocomplete()ことができますが、オプションのコールバック関数を受け入れて に渡すことができるように関数を書き直すだけですautocomplete()

それで、どうやってそれをしますか?


アップデート

以下のクローズアップに基づいて、これを試しましたが、完全な回答ではありません。

jQuery.fn.bindAutocomplete = function(callbacks) {
  $(this).each( function(callbacks) {
    options = $.extend({source: $(this).data('autocomplete-source')}, callbacks);
    $(this).autocomplete(options);
  });
}

これにより、コールバックを渡すかどうかに関係なく、オートコンプリートが正しくバインドされますが、コールバックを渡すと呼び出されません。

つまり、次はオートコンプリートをトリガーしましたが、コールバックはトリガーしませんでした。

$('input#name').bindAutocomplete({ select: function(){alert("working");} })
4

1 に答える 1

2

そういう意味ならできると思いますが…

jQuery.fn.bindAutocomplete = function( opts ) {        
  return this.each(function(){
    opts = $.extend({
      source: $(this).data('autocomplete-source')
    }, opts);
    $(this).autocomplete( opts );
  });
}

$('input#name').bindAutocomplete({
  change: function() { ... },
  close: function() { ... }
});
于 2012-11-08T00:57:06.570 に答える