插件中的回调函数

时间:2016-05-17 09:33:21

标签: jquery callback

我正在尝试用jQuery编写我的第一个插件,我对回调有点困惑。

对我而言,似乎一切都很好,但不是很好。

逻辑是(我想的)是创建一个全局settings对象。实例化时,tokenizer设置将使用给定的设置/选项进行扩展/覆盖,因此应覆盖onAdd此处$('#xxx').tokenizer(...

之后我只是add一个项目,但在控制台中它很难过:

The item in onAdd
undefined

这是jsFiddle

var settings = {
    onAdd: function () {},
    onRemove: function () {},
    sourceSelecter: null,
    targetSelector: null
};

$.fn.tokenizer = function (options) {
    this.settings = $.extend({
        targetSelector: this,
        idName: 'id'
    }, settings, options);

    this.add = function (item) {
        console.log('The item in function add: ' + item);
        this.settings.onAdd.call(item);
    };

    this.remove = function (item) {
        this.settings.onRemove.call(item);
    };

    return this;
};

var $tokenizer = $('#xxx').tokenizer({
    sourceSelector: 'group',
    onAdd: function (item) {
        console.log('The item in onAdd');
        console.log(item);
    }
});

$tokenizer.idName = 'groupId';
$tokenizer.add('abcdefg');

1 个答案:

答案 0 :(得分:2)

call应该是: -

this.settings.onAdd.call(this, item);
  

<强>语法

     

fun.call(thisArg[, arg1[, arg2[, ...]]])

FIDDLE