1

jqueryuiオートコンプリートを使用しています。オートコンプリートをさまざまなセレクターにバインドしたいのですが、オートコンプリート関数の成功、ソースなどをセレクターごとにカスタマイズする必要があります。

//Define execute function for birds
//Define execute function for turtles
        $( "#birds,#turtles" ).autocomplete({
          source: "search.php",
          minLength: 2,
          select: function( event, ui ) {
            this.execute();
            /*based on selector id execute() will call the 
              right function attached with the selector
              if called by birds
                call execute function of birds
              if called by turtles
                call execute function of turtles*/
          }
        });

では、さまざまなオブジェクトにカスタマイズ関数をアタッチして、jqueryにセレクターに基づいて適切なソースとカスタマイズされた関数を選択させるにはどうすればよいですか?

4

1 に答える 1

2

Event.targetオートコンプリートをトリガーしたDOM要素を提供します。

    $( "#birds,#turtles" ).autocomplete({
      source: "search.php",
      minLength: 2,
      select: function( event, ui ) {
        this.execute();
        autocomplete(event, ui);
      }
    });

function autocomplete(event, ui){
     if(event.target.id == "birds"){
       //dothis();
     }else if(event.target.id == "turtles"){
       //dothat();
     }
}

別のオプション

より洗練されたソリューションが必要な場合は、オブジェクトのようなファクトリを作成できます。そのような:

var completions = {
   turtles: function(){
     //Do this
   },
   birds: function(){
     //Do that
   }
};

次に、idをキーとして使用して、selectにバインドされた関数でこのオブジェクトを使用します。

   $( "#birds,#turtles" ).autocomplete({
      source: "search.php",
      minLength: 2,
      select: function( event, ui ) {
        this.execute();
        completions[event.target.id]();
      }
    });
于 2013-02-06T10:39:35.437 に答える