试图在jquery自动完成的result()函数中获取全局变量的值

时间:2011-03-15 13:57:24

标签: javascript jquery autocomplete

我在下面有这个代码。正如您所看到的,我正在尝试在jqueryautocomplete的alert函数中使用变量客户端。

问题:当我从自动完成下拉菜单中选择一个项目时,它会打印“未定义”而不是var的值。为什么呢?

jQuery(document).ready(function() {

  var clients = 0;

  alert(clients); //this prints 0.

  jQuery("#user_autocomplete")
  .autocomplete('autocompleteUser', jQuery.extend({}, {
    dataType: 'json',
    parse: function(data) {

      var parsed = [];
      for (key in data) {

    parsed[parsed.length] = { data: [ data[key], key ], value: data[key], result: data[key] };
      }

      return parsed;

      }
  } ))
  .result(function(event, data) {
   $('#field_users').append('<div class="user_choosen" id=' + data[1] + '>' + data[0] +'<a class="link_delete_user" href="#" onclick="javascript:deleteUser(' + data[1] +')">Delete</a></div>'); 
    $('#user_autocomplete').val(''); 

    alert(clients); //this prints undefined

  });

});

此致

哈维

1 个答案:

答案 0 :(得分:1)

这不是一个全局变量,这是在文档准备就绪时运行的匿名函数范围内定义的变量。

我相信当运行传递给自动完成的结果方法的匿名函数时,范围可能会丢失。