代码之家  ›  专栏  ›  技术社区  ›  Marko

jQuery:如何在方法中获取这个的原始值

  •  0
  • Marko  · 技术社区  · 14 年前

    我正在尝试使用JS和jQuery进行一些面向对象的设计。 我有以下施工人员:

    function A () {
      this.url = "some url";
    
       $("rrr").autocomplete({
        source: function(req, add){
           $.getJSON(this.url, req, function(data) {} ...
    }
    

    如你所料,我不能用 此.url . 没有这个,我不能只使用url,因为它没有声明。 我想到的是有这样的东西:

    function A () {
      this.url = "some url";
      var url = this.url;
    
       $("rrr").autocomplete({
        source: function(req, add){
           $.getJSON(url, req, function(data) {} ...
    }
    

    但这实在是太难看了,而且只适用于房产。

    从jquery方法的原始作用域?

    2 回复  |  直到 14 年前
        1
  •  2
  •   James Zaghini Gandalf    10 年前

    问题在于“this”引用是对触发事件的对象的引用。当“this”被实例化时,在类中保留它的引用是不理想的,但可以绕过这个问题(您可以随意调用它,但通常是“self”或“u this”是我所称的)。

    function A () {
      var _this = this;
      _this.url = "some url";
    
    
       $("rrr").autocomplete({
        source: function(req, add){
           $.getJSON(_this.url, req, function(data) {} ...
    }
    
        2
  •  2
  •   Nick Craver    14 年前

    你可以用 $.proxy() 设置 this 在函数的上下文中,如下所示:

    function A () {
      this.url = "some url";
      $("rrr").autocomplete({
         source: $.proxy(function(req, add){
                   $.getJSON(this.url, req, function(data) {});
                 }, this)
      });
    }
    

    $.proxy() and not really much overhead at all here .