JS范围:访问变量

时间:2013-06-24 15:26:08

标签: javascript jquery scope

我知道这个问题已被多次询问,但形式不同。我想访问最顶层函数范围内的selected变量(alert当前正在返回undefined)。我知道我需要以某种方式使用return。提前谢谢。

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

  var selected;

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

  alert(selected);

}

2 个答案:

答案 0 :(得分:4)

这没有任何意义。当li a发生时,alert尚未被点击。 alert总是显示undefined,为selected 分配值的代码尚未运行可能从不运行

如果要提醒值,则需要在实际点击li a时执行此操作:

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

  var selected;

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


}

答案 1 :(得分: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);
}