使用at.js的atwho()函数不能在ajax中成功

时间:2018-06-06 10:07:35

标签: jquery json ajax at.js

我使用像这样的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()中手动添加数据,它就能顺利运行。但这些方法并不奏效。

请提供任何解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在回调中,我认为除非您指定context属性,否则此指针不再引用您的元素:

$.ajax({
   ...
   context: this,

然后在回调中,这将引用表示插件的jQuery对象。或者,在ajax之外定义一个变量:

var that = this; //that can be accessed by your callback
$.ajax({
  ..,
  success: function(..) {
     $(that).atwho(..);
  }

这两个选项都应该有用。