如何更改processBefore函数中someFunc中初始化的数据变量?
jQuery.fn.someFunc = function(options) {
var data = 1;
if (typeof options.processBefore == 'function')
options.processBefore(data);
console.log(data); // need data after options.processBefore magic
}
$('#some').someFunc({
processBefore: function() {
// how to change data variable here???
}
});
答案 0 :(得分:1)
要执行此操作,您可以return
分配给precessBefore
的函数中的新值,并将其分配给插件定义中的data
,如下所示:
jQuery.fn.someFunc = function(options) {
var data = 1;
options = options || {};
if (typeof options.processBefore == 'function')
data = options.processBefore(data);
console.log(data);
}
$('#foo').someFunc({
processBefore: function(data) {
// some logic here...
return data * 5;
}
});
$('#bar').someFunc();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo"></div>
<div id="bar"></div>
另请注意我添加的行,如果在初始化时未提供参数,则会处理为options
定义默认对象。
答案 1 :(得分:0)
data
设置为1
,这是一个原语,因此无法进行变异。相反,如果你传递一个对象(可以变异),那应该完美无缺:
jQuery.fn.someFunc = function(options) {
var data = {a: 1};
if (typeof options.processBefore == 'function')
options.processBefore(data);
console.log(data); // data.a will be 2 here
}
$('#some').someFunc({
processBefore: function(data) {
data.a = 2;
}
});