Функция atwho() с использованием at.js не работает в ajax
Я создал собственный плагин jquery, используя at.js, как это,
(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(), это будет работать нормально. Но этот метод не работает.
Пожалуйста, предоставьте любое решение.
Заранее спасибо.
1 ответ
Решение
Внутри обратного вызова, я думаю, этот указатель больше не ссылается на ваш элемент, если вы не укажете свойство context:
$.ajax({
...
context: this,
Затем в обратном вызове это будет относиться к объекту jQuery, представляющему плагин. ИЛИ, вне ajax определите переменную:
var that = this; //that can be accessed by your callback
$.ajax({
..,
success: function(..) {
$(that).atwho(..);
}
Оба варианта должны работать.