jQuery插件通过选项函数返回值

时间:2015-05-15 00:25:28

标签: javascript jquery function jquery-plugins

我正在制作自己的jQuery插件(我还在学习!)。插件在点击某个元素后需要返回值。

它看起来像这样:

$.fn.testPlugin = function(options) {

    var defaultOptions = {
        values: {
            value1: "",
            value2: ""
        },
        onDivNameClick: function() {}
    };
    options = $.extend(true, defaultOptions, options);

    //Do some initializing here

    divName.click(function () {

        //Do some other plugin stuff on click here

        // onClick User Function
        if ($.isFunction(options.onDivNameClick)) {
            options.onDivNameClick.call(options.values);
        }
    })

    //Other code here.


    return this;
}

我初始化插件并传递我想要执行的命令,但插件不会通过values返回我需要的值,而是'undefined'。 调试显示options.values插件中有数据,所以我不完全确定这是正确的方法。

$("#elName").testPlugin({
    onDivNameClick: function (values) { //values returns 'undefined'
        model.value1 = values.value1;
        model.value2 = values.value2;
    },
    option1: "",
    //other options
});

onDivNameClick应该将options.values传递给选项中的函数,但目前不会。我做错了什么?

1 个答案:

答案 0 :(得分:0)

javascript prototype.call()方法需要另外一个引用this的参数。

if ($.isFunction(options.onDivNameClick)) {
    options.onDivNameClick.call(this, options.values);
}

因此 - 没有通过函数传递实际值。