我正在尝试为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
答案 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
});
});
这应该有用。