使用 at.js 的 atwho() 函数在 ajax 成功时不起作用
atwho() function using at.js doesn't work in ajax success
我已经使用 at.js 创建了一个自定义 jquery 插件,
(function ($) {
$.fn.mention = function (options) {
var defaults = {
at: "@",
dataType: "json",
source: "",
data: {}
};
var settings = $.extend({}, defaults, options);
$.ajax({
url: settings.source,
data: settings.data,
dataType: settings.dataType,
method: "POST",
success: function (result) {
if (result.success) {
$(this).atwho({
at: settings.at,
data: result.data
});
}
}
});
};
})(jQuery);
我是这样使用插件的,
$('#textbox').mention({
source: "<?php echo_uri("..some_links"); ?>",
data: {some_data: some_data_value}
});
以及 ajax 成功的数据,生成我需要的确切 json 数组。我想在这里提一下,如果我在 atwho() 中手动添加数据,它会很顺利地工作。但是这些方法不起作用。
请提供任何解决方案。
提前致谢。
在回调中,我认为该指针不再指向您的元素,除非您指定 context 属性:
$.ajax({
...
context: this,
然后在回调中,this 将引用代表插件的 jQuery 对象。或者,在 ajax 之外定义一个变量:
var that = this; //that can be accessed by your callback
$.ajax({
..,
success: function(..) {
$(that).atwho(..);
}
两个选项都应该有效。
我已经使用 at.js 创建了一个自定义 jquery 插件,
(function ($) {
$.fn.mention = function (options) {
var defaults = {
at: "@",
dataType: "json",
source: "",
data: {}
};
var settings = $.extend({}, defaults, options);
$.ajax({
url: settings.source,
data: settings.data,
dataType: settings.dataType,
method: "POST",
success: function (result) {
if (result.success) {
$(this).atwho({
at: settings.at,
data: result.data
});
}
}
});
};
})(jQuery);
我是这样使用插件的,
$('#textbox').mention({
source: "<?php echo_uri("..some_links"); ?>",
data: {some_data: some_data_value}
});
以及 ajax 成功的数据,生成我需要的确切 json 数组。我想在这里提一下,如果我在 atwho() 中手动添加数据,它会很顺利地工作。但是这些方法不起作用。
请提供任何解决方案。
提前致谢。
在回调中,我认为该指针不再指向您的元素,除非您指定 context 属性:
$.ajax({
...
context: this,
然后在回调中,this 将引用代表插件的 jQuery 对象。或者,在 ajax 之外定义一个变量:
var that = this; //that can be accessed by your callback
$.ajax({
..,
success: function(..) {
$(that).atwho(..);
}
两个选项都应该有效。