jQuery 插件开发执行一个函数的设置
jQuery plugin development execute a setting that is a function
我正在尝试组装一个自动完成 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);
}
...
},
...
我希望它记录 "Hello!",但我得到的是:
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);
}
我正在尝试组装一个自动完成 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);
}
...
},
...
我希望它记录 "Hello!",但我得到的是:
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);
}