我有以下结构
// script1.js
jQuery(document).ready(function($) {
var somevar;
$('somelem').myPlugin();
});
// script2.js
(function($) {
$.fn.myPlugin = function(options) {
// access and modify 'somevar' here so that it gets modified
// in the function which called a plugin
};
});
答案 0 :(得分:2)
传递基本类型时,它会按值传递。但是,如果你传递一个对象,那么它将通过引用传递。所以,你可以这样做 -
jQuery(document).ready(function($) {
var somevar = {val: 5};
$(document).myPlugin(somevar);
alert(somevar.val);
});
// script2.js
(function($) {
$.fn.myPlugin = function(options) {
options.val ++;
// access and modify 'somevar' here so that it gets modified
// in the function which called a plugin
};
})(jQuery);
查看现场演示:: http://jsfiddle.net/rifat/EdRFm/
答案 1 :(得分:0)
您可以为全局变量创建一个单例类。
答案 2 :(得分:0)
您可以让插件函数返回一个值并将其分配给somevar
somevar = $('someelem').myPlugin();
或者您可以将回调作为参数传递给插件方法
// Script 1
var somevar;
$('someelem').myPlugin(function(newValue) {
somevar = newValue;
});
// Script 2
$.fn.myPlugin = function(callback) {
...
callback(newValueForSomeVar);
}
答案 3 :(得分:-1)
您可以编写将从变量设置值的函数,然后在另一个脚本中调用它。
//script1.js
var somevar;
function setSomevar(value){
somevar = value;
}
function getSomevar(){
return somevar;
}
jQuery(document).ready(function($) {
$('somelem').myPlugin();
});
现在您可以调用函数setSomevar并将值传递给变量。 我希望有所帮助。最好的祝福。