-2

この質問は何度も聞かれてきましたが、形はさまざまです。selected最上位の関数のスコープ内の他の場所にある変数にアクセスしたい(alert現在未定義を返しています)。return何らかの形でa を使用する必要があることはわかっています。前もって感謝します。

$('#people_search_mobile').change(function() {

  var selected;

  $('li a', $('#suggestions')).bind('click.autocomplete',function(){ 
    selected = ($(this).text());
  });

  alert(selected);

}
4

2 に答える 2

4

これは意味がありません。li aが発生したとき、まだクリックされていませんalert。は常に表示alertされ、値を割り当てるコードは実行されておらず決して実行されない可能性がありますundefinedselected

値を警告したい場合は、li a実際にクリックされたときに行う必要があります。

$('#people_search_mobile').change(function() {

  var selected;

  $('li a', $('#suggestions')).bind('click.autocomplete',function(){ 
    selected = ($(this).text());
    alert(selected);
  });


}
于 2013-06-24T15:27:13.893 に答える
1

Meagar は正しいですが、関数を別の場所に記述すると、イベント ハンドラーをきれいに保つことができる場合があることがわかりました。

$('#people_search_mobile').change(function() {

  var selected, myClickHandler;

  myClickHandler = function(){
    selected = ($(this).text());
    alert(selected);
  };

  $('li a', $('#suggestions')).bind('click.autocomplete', myClickHandler);

}

編集:または、選択した値を別の場所にある別の関数に渡したい場合...

  myClickHandler = function(){
    selected = ($(this).text());
    showMyAlert(selected);
  };

...

function showMyAlert(selected){
  alert(selected);
}
于 2013-06-24T15:31:59.223 に答える