-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 回答