JavaScript / jQuery scope
JavaScript / jQuery scope
嗨,我正在扩展一个现有的插件使用静态JSON,而不是从服务器加载它。这是一个精简版的扩展:
(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
未定义。这一定是某种形式的范围问题,但我不能解决它?
这不是作用域。这是时机。
在传递给each
的匿名函数结束之前,函数不会分配给fromJson
。
如果你从get
回调中调用它,那么这个赋值将在HTTP响应返回和函数触发之前发生。
如果你直接调用它,那么它还不存在。
要么重新排序:
return this.each(function () {
var fromJson = function (json) {
// json stuff..
}
if (opts.load_Json) {
$.get("", function (result) {
fromJson(opts.load_Json)
});
}
});
或者使用函数声明(将会被提升):
return this.each(function () {
if (opts.load_Json) {
$.get("", function (result) {
fromJson(opts.load_Json)
});
}
function fromJson (json) {
// json stuff..
}
});
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- Javascript / JQuery scope
- jQuery / JavaScript Function Scope / Hoisting
- jQuery $.each variable Scope
- Javascript Scope using JQuery
- jQuery clearInterval undifined variable scope issue
- Angular js $scope在 Jquery 函数中不起作用
- toggle() scope in a jquery script
- Javascript Scope (Jquery)
- 我如何区分$ (jQuery)和$scope从AngularJS
- jQuery如何在自定义指令中响应$scope的变化?
- JavaScript / jQuery scope
- Angularjs $scope变量内部的jquery绑定方法
- 如何使用AngularJS的scope来监视JQuery选择器
- JavaScript + jQuery this scope