在实例化JQuery小部件时选择当前元素

时间:2014-12-09 11:14:24

标签: javascript jquery autocomplete

我正在尝试为JQuery自动完成窗口小部件构建动态URL,但在实例化窗口小部件时,我似乎无法找到引用当前元素的方法。 $(this)和这个引用HTMLDocument对象而不是当前正在实例化小部件的元素,有没有办法改变这个?这是我的代码:

$(function() 
{   
    $(".autocomplete").autocomplete({
      source: baseUrl+"autocomplete/"+window.filter+"/"+$(this).attr("name"),
      minLength: 2
    });
}

这是创建的当前网址:

  

http://example.com/autocomplete/products/undefined?term=test

但它应该是:

  

http://example.com/autocomplete/products/filter-name?term=test

修改

这是JSFiddle

2 个答案:

答案 0 :(得分:1)

您不在另一个范围内,因此this将引用它所指的任何内容。您需要遍历每个.autocomplete元素:

$(".autocomplete").each(function(i, e) {
    //both "e" and "this" now refer to the element
    $(e).autocomplete({
      source: baseUrl+"autocomplete/"+window.filter+"/"+ $(e).attr("name"),
      minLength: 2
    });
});

答案 1 :(得分:1)

在您的代码中,this引用了文档对象,它没有name属性,因此您看到了错误。

您需要以不同方式初始化自动填充:

var filter = "products";
$(".autocomplete").each(function(i, el) {
  $(el).autocomplete({
    source: "http://example.com/autocomplete/" + filter + "/" + el.name,
    minLength: 2
  });
});

这应该有用。