【问题标题】:atwho() function using at.js doesn't work in ajax success使用 at.js 的 atwho() 函数在 ajax 成功中不起作用
【发布时间】:2018-06-06 10:07:34
【问题描述】:

我已经像这样使用 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() 中手动添加数据,它可以顺利工作。但这些方法不起作用。

请提供任何解决方案。

提前致谢。

【问题讨论】:

    标签: jquery json ajax at.js


    【解决方案1】:

    在回调内部,我认为这个指针不再指向您的元素,除非您指定 context 属性:

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

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

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

    这两个选项都应该有效。

    【讨论】:

    • 非常感谢您的宝贵回答。它现在正在工作:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2013-01-29
    • 2014-07-08
    相关资源
    最近更新 更多