jQuery如何实现静态属性?

李惟 发布于 2011/10/13 18:01
阅读 1K+
收藏 1

我可以通过$.fn.func来自定义一个jQuery方法

我现在需要在这个方法中设置一个静态方法来统计次数,类似

$.fn.func=function()
{
    this.i = 0;
    this.i++;
}

每次调用函数的时候$('<div></div>').func();方法中的i就自增一次,如果调用了三次,如下

$('<div></div>').func();
$('<div></div>').func();
$('<div></div>').func();

方法中的i就是3了,请问如何实现?

加载中
0
scl33
scl33

jquery用的很少, 不知这样是否可以

$.fn.func=(function(){
    var total = 0;
    return function(){return total++;};
})();

0
磊神Ray
磊神Ray
需要先保存$('<div></div>')这个对象
0
李惟
李惟

引用来自“磊.Y”的答案

需要先保存$('<div></div>')这个对象

可能不只是这一个对象,也可能有下面这样的情况

$('#test').func();
$('.foo').func();
$('img').func();

备注:我需要知道这个方法被使用了多少次,不需要统计多少个对象使用这个方法。
0
磊神Ray
磊神Ray
定义一个全局变量不是可以吗
0
李惟
李惟

引用来自“磊.Y”的答案

定义一个全局变量不是可以吗
你的意思就是说必须到方法外面定义一个用来统计的变量吗?
0
李惟
李惟

搞定了:http://levi.cg.am/?p=1044

我没有保存$('<div></div>')单个对象,也没有申明全局变量。

我定义了一个静态方法和静态属性,让后将函数原生对象绑定给jQuery对象,这样就可以实现统计了。

(function($)
{
	$.fn.build = create;
	function create()
	{
		create.add();
		alert(create.num);
	}

	create.num = 0;
	create.add = function()
	{
		create.num++;
	}
})(jQuery);

$(function ()
{
	$().build();
	$('p').build();
	$('#main').build();
});


0
李惟
李惟

引用来自“scl33”的答案

jquery用的很少, 不知这样是否可以

$.fn.func=(function(){
    var total = 0;
    return function(){return total++;};
})();

谢谢
返回顶部
顶部