【问题标题】:jQuery plugin development execute a setting that is a functionjQuery插件开发执行一个设置是一个函数
【发布时间】:2016-02-25 13:50:33
【问题描述】:

我正在摆弄一个自动完成的 jQuery 插件。我知道有一个默认设置,但我发现有时我只需要一些非常简单的东西,并且还想根据我的需要调整行为。最后,体验一下还挺有趣的。如果它变成有用的东西,我可能会为它建立一个小型插件站点。

无论如何;该插件有一些选项。其中之一是dataSource。它可以是对象、字符串或函数。我正在尝试完成任务以执行该功能。我试过eval 它,但是当我使用console.log 时,它只记录该函数所包含的javascript 代码。

插件的实现

$('#search3').myAutoCompletePlugin({
    completeOnEnter: false,
    delay: 200,
    dataSource: function() {
        console.log('Hello!');
    }
});

在插件的代码中,这是我尝试执行它的方式。

...
getResults: function() {
    var self = this,
        dataSourceType = typeof self.options.dataSource;

    self.request.items = [];

    ...
    } else if (dataSourceType == 'function') {
        // Callback as source, execute it
        self.request.items = eval(self.options.dataSource);
        console.log('function executed');
        console.log(self.request.items);
    } 
    ...
},
...

我希望它记录“你好!”,但我得到的是:

function executed
function () {
        console.log('Hello!');
    }

【问题讨论】:

    标签: javascript jquery function jquery-plugins


    【解决方案1】:

    如果dataSource属性是一个函数,你可以直接调用它,不需要eval()

    else if (typeof self.options.dataSource == 'function') {
        self.request.items = self.options.dataSource();
        console.log('function executed');
        console.log(self.request.items);
    } 
    

    【讨论】:

    • 嗯,这非常简单。愚蠢的是我之前没有想到这一点。谢谢,就像一个魅力! +1A
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2016-02-27
    相关资源
    最近更新 更多