Javascript 如何通过;这";匿名函数的上下文
我正在尝试使用著名的DevBridge autocomplete插件/库(不确定确切的术语是什么)为一些输入字段构建autocomplete 我的常见问题是,在输入应该确定发送哪个参数的函数时,我丢失了“this”上下文(现在是一个简单的警报($(this).attr('class'))来检查上下文) 我需要将一个参数传递到后端,以知道哪个输入是当前正在处理的输入 我的选择器位于输入html上,如下所示:Javascript 如何通过;这";匿名函数的上下文,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我正在尝试使用著名的DevBridge autocomplete插件/库(不确定确切的术语是什么)为一些输入字段构建autocomplete 我的常见问题是,在输入应该确定发送哪个参数的函数时,我丢失了“this”上下文(现在是一个简单的警报($(this).attr('class'))来检查上下文) 我需要将一个参数传递到后端,以知道哪个输入是当前正在处理的输入 我的选择器位于输入html上,如下所示: <input type="text" class="input_actu input
<input type="text" class="input_actu input_autocomplete" id="input_contentactualites0" name"input_contentactualites0" data-id="" value="" size="70" maxlength="300"/>
关于这个问题有很多帖子和解决方案,我试过这样的.bind(this):
$('.input_autocomplete').devbridgeAutocomplete({
serviceUrl: 'autocomplete',
params: {flag: function () {
alert($(this).attr('class'));
}.bind(this)},
minChars: 3,
type: 'post',
onSelect: function (suggestion) {
$(this).attr("data-id", suggestion.data)
}
});
它似乎不起作用,我也读过关于call()的文章,但我不确定它是否能在我的情况下起作用
另外,我宁愿不要使用全局搜索,因为这不是一个好方法
欢迎您提供任何建议,谢谢您的阅读和帮助:)也许这有帮助
var params = {
flags: function (o) {
alert($(o).attr('class'));
}
};
var config = {
serviceUrl: 'autocomplete',
minChars: 3,
type: 'post',
onSelect: function (suggestion) {
$(this).attr("data-id", suggestion.data);
//#####################Fire the event:
params.flags(this);
}
};
var configDev = $.extend(config, params);
$('.input_autocomplete').devbridgeAutocomplete(configDev);
方法1<代码>绑定-方法2-
箭头
-但是,您似乎要绑定
。。。那么,您可以从控制台报告任何错误吗?您要绑定的这个是什么?您的codeConsole不清楚是否存在任何错误。我在我的原始帖子中添加了我的选择器目标。至少我知道我的语法没有错,我正在继续调查,并将尝试箭头一,如果我找到答案,将进行更新。第一个是我的第二个代码块,现在是好的。你好,不清楚。params是可选的,如何触发事件params.flag?我不明白对不起,params确实是可选的。我可以看到它被发送到自动完成帖子的标题中。谢谢,除了我在参数标志函数中丢失了它,而不是在onSelect中,我也尝试不使用这种方式,因为人们说它不好。但谢谢,我会用它,如果我不能让它正常工作,请至少添加一个简短的描述,实际修复是什么。
var params = {
flags: function (o) {
alert($(o).attr('class'));
}
};
var config = {
serviceUrl: 'autocomplete',
minChars: 3,
type: 'post',
onSelect: function (suggestion) {
$(this).attr("data-id", suggestion.data);
//#####################Fire the event:
params.flags(this);
}
};
var configDev = $.extend(config, params);
$('.input_autocomplete').devbridgeAutocomplete(configDev);