Jquery - 不使用 var 将 $(this) 传递给回调函数
Jquery - Pass $(this) to callback function without var
您好,精彩的社区!
我在 jquery 中遇到了关于在函数内访问 $(this) 的问题。通常我会使用 var 来传递它,但在实际情况下我无法定义任何 var.
而且我不知道如何通过"source: function()"的参数传递它。
我尝试了 "source: function(request, response, self = $(this))" 但它不起作用。
$(".autocomplete-file-label").autocomplete({
minLength: 3,
source: function(request, response){
var category = $(this).attr("data-category");
if(category == '')
{
var source = 'http://www.example.com/?term=' + request.term;
}
else
{
var source = 'http://www.example.com/?term=' + request.term + '&type=' + category;
}
$.ajax({
url: source,
data : request.term,
dataType: "json",
type: "POST",
success: function (data)
{
response($.map(data, function( item ) {
return item;
}));
}
});
},
focus: function( event, ui ) {
$(this).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$(this).val( ui.item.label);
$(this).next(".autocomplete-file-id").val( ui.item.id );
return false;
}
})
如果您有任何解决方案,我将非常高兴!
非常感谢!
对于需要来自元素的实例特定数据的插件,一种常见的方法是在 each
循环中启动插件
$(".autocomplete-file-label").each(function() {
var category = $(this).attr("data-category");
$(this).autocomplete({
minLength: 3,
source: function(request, response) {
if (category == ''){
///.....
}
}
//....
}
});
});
您好,精彩的社区!
我在 jquery 中遇到了关于在函数内访问 $(this) 的问题。通常我会使用 var 来传递它,但在实际情况下我无法定义任何 var.
而且我不知道如何通过"source: function()"的参数传递它。
我尝试了 "source: function(request, response, self = $(this))" 但它不起作用。
$(".autocomplete-file-label").autocomplete({
minLength: 3,
source: function(request, response){
var category = $(this).attr("data-category");
if(category == '')
{
var source = 'http://www.example.com/?term=' + request.term;
}
else
{
var source = 'http://www.example.com/?term=' + request.term + '&type=' + category;
}
$.ajax({
url: source,
data : request.term,
dataType: "json",
type: "POST",
success: function (data)
{
response($.map(data, function( item ) {
return item;
}));
}
});
},
focus: function( event, ui ) {
$(this).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$(this).val( ui.item.label);
$(this).next(".autocomplete-file-id").val( ui.item.id );
return false;
}
})
如果您有任何解决方案,我将非常高兴!
非常感谢!
对于需要来自元素的实例特定数据的插件,一种常见的方法是在 each
循环中启动插件
$(".autocomplete-file-label").each(function() {
var category = $(this).attr("data-category");
$(this).autocomplete({
minLength: 3,
source: function(request, response) {
if (category == ''){
///.....
}
}
//....
}
});
});