jQuery:如何使用文字对象方法中的方法来获取全局变量
jQuery: How to get global variables using methods in literal object approach
我将原型插件移植到 jQuery。
该插件使用禁止的方法收集对象文字中的所有插件方法,然后像 [对象] 一样调用它们。[方法]
我不明白的是,在任何这些方法中,都使用了属性(在脚本的乞求处定义,即 var x = 0、var y = 0 等),这些属性似乎是全局的,而不是作为特定方法的参数或属性传递。
我将如何在jQuery中执行此操作,这可能吗?
请参考下面代码中的"var1"。在哪里设置它,以便所有方法都可以访问它?
例:
;(function($){
var methods = {
init : function(options) {
var config = {
// default options...
}
// overide config
var settings = $.extend(config, options);
return this.each(function() {
// init code goes here...
});
},
function1 : function() {
function2();
},
function2 : function() {
$(selector).css({
width : var1,
});
},
}
$.fn.[PLUGINNAME] = function(method) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})(jQuery);
您需要在自唤函数内部声明变量,但在任何其他函数外部声明变量。
(function($){
// This variable will be available to all methods,
// but not outside the plugin
var var1,
methods = {
init : function(options) {
...
}
...
};
})(jQuery);
然后,您可以使用 init 方法为其设置正确的值,例如,如果它是初始化过程的一部分,而不仅仅是静态变量。
由于 JavaScript 使用函数来声明变量范围,因此外部自唤函数将确保变量不会"泄漏"到全局范围,但由于它是在任何内部函数之外声明的,因此它将可用于插件中的所有函数。
如果你在其他
所有事情之前在最顶层的函数中定义它,它将可以通过所有其他方法访问:
(function($){
var var1 = "some value";
var methods = {
init : function(options) {
var config = {
// default options...
}
// overide config
var settings = $.extend(config, options);
return this.each(function() {
// init code goes here...
});
},
function1 : function() {
function2();
},
function2 : function() {
$(selector).css({
width : var1,
});
},
}
$.fn.slideshow = function(method) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})(jQuery);
相关文章:
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- Get方法获取csv文件的内容
- 从 Rails dom_id 方法获取 HTML 类名
- 如何从发布方法获取数据后重定向
- 使用jQuery.attr()方法获取元素属性
- 如何通过 .ajax() jQuery 方法获取 Carrierwave 上传到 Amazon S3 的图像的 URL
- jQuery / Javascript方法获取当前页面的标题,将其与字符串匹配,将类分配给该特定元素
- 无法使用 jquery 方法获取属性值
- 如何通过 php 表中的 post 方法获取值,并在表中获取替换前一个表的值
- 如何从findOneAndUpdate方法获取更新的文档
- 在下划线js,我可以在输入后使用弹拨方法获取多列,其中方法作为linq选择投影
- 使用 jQuery $.post() 方法获取另一个网页的一部分
- 节点.js类型错误:对象没有方法获取
- 在 JSF 中,如何在使用后备 Bean 方法获取值后调用 java 脚本
- 使用GWT'从java方法获取返回值;s JSNI
- 描述从回调方法获取正确的作用域
- 从Jquery$.getJSON方法获取数组的全局数组到REUSE数组
- 从angular post方法获取数据
- 在JavaScript中为自己的日期方法获取ReferenceError
- 如何使用moment.jsfromNow方法获取天数