JavaScript/jQuery作用域
嗨,我正在扩展一个现有的插件来使用静态JSON,而不是从服务器加载它。这是扩展的精简版本:JavaScript/jQuery作用域,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,嗨,我正在扩展一个现有的插件来使用静态JSON,而不是从服务器加载它。这是扩展的精简版本: (function ($) { $.fn.MyExtension = function (options) { return this.each(function () { if (opts.load_Json) { $.get("", function (result) { fromJ
(function ($) {
$.fn.MyExtension = function (options) {
return this.each(function () {
if (opts.load_Json) {
$.get("", function (result) {
fromJson(opts.load_Json)
});
}
var fromJson = function (json) {
// json stuff..
}
});
});
如果我删除
$.Get
并直接调用fromJson
,而不回拨,我会收到一个错误,说明未定义fromJson
。这一定是某种形式的范围问题,但我无法解决它?这不是范围问题。这是时机
在传递给每个的匿名函数结束之前,函数不会从JSON分配给
如果从get
回调调用它,那么该赋值将在HTTP响应返回和函数启动之前发生
如果你直接给它打电话,它就不存在了
重新排序:
return this.each(function () {
var fromJson = function (json) {
// json stuff..
}
if (opts.load_Json) {
$.get("", function (result) {
fromJson(opts.load_Json)
});
}
});
或使用功能声明(以吊装为准):
您有选项
,以后有选项
。这真的是源于您的代码,还是仅仅是一个问题输入错误?如果您将var fromJson=function(json){}
赋值移到条件之上,那么您编写代码时也会定义一个函数,但随后会将其丢弃,对它不做任何处理,也不会在其中运行代码。恕我直言,我建议你写一篇文章,然后把它贴出来。太棒了,一针见血。
return this.each(function () {
if (opts.load_Json) {
$.get("", function (result) {
fromJson(opts.load_Json)
});
}
function fromJson (json) {
// json stuff..
}
});