jQuery插件开发执行一个设置,这是一个函数

jQuery plugin development execute a setting that is a function

本文关键字:一个 函数 设置 jQuery 开发 插件 执行      更新时间:2023-09-26

我正在摆弄试图将一个自动完成的jQuery插件放在一起。我知道有一个默认的,但我发现我有时只需要一些非常简单的东西,并且还想根据我的需求调整行为。最后,四处游荡有点有趣。如果它被证明是有用的东西,我可能会为它建立一个小的插件网站。

无论如何;该插件有一些选项。其中之一是 dataSource .它可以是对象、字符串或函数。我正在尝试完成任务以执行函数。我试图eval它,但是当我控制台时.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!');
    }

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

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