我正在研究一个jQuery插件。基本上,我需要做的是用setInterval在我的插件中调用一个私有函数。看起来有很多不同的方法来创建一个jQuery插件。我用下面的方法,因为我觉得它清楚,但如果有需要我改变构建我的插件的方式工作的解决方案,我开...在setInterval()中调用jQuery插件的私有函数
我简化我的插件只保留问题部分:
(function($){
$.fn.something = function(options)
{
var opts = $.extend({}, $.fn.something.defaults, options);
return this.each(function()
{
var $this = $(this);
$this.click(function(){
startSomething($this);
});
});
// Private function
function startSomething($this)
{
// $this is defined
setInterval(doSomething, 1000);
};
// Another private function
function doSomething($this)
{
// $this is undefined
};
};
$.fn.something.defaults = {
my_option: 'value'
};
})(jQuery);
问题是我想每秒调用一次doSomething()。但我需要保留对我的元素的引用(在$ this变量中)。如果我使用setInterval(doSomething),该函数被调用所有权利,但我没有$ this变量作为参数。如果我使用setInterval(“doSomething($ this)”),则该函数未定义,因为它试图在全局上下文中找到它。
那么,什么将是解决办法在这里打电话给我私人的功能,并能够将参数传递给它?
感谢
即使没有jQuery和插件,你不能把你的函数引用的setInterval的方式。这里有一个jsFiddle向你展示:http://jsfiddle.net/ZZXm2/没有()或者字符串“”是两种可能性。另一个想法是 – Gabriel 2012-02-21 22:37:14
。设置这个数据(),不通过它,并再次选择间隔方法 – mindandmedia 2012-02-21 22:44:59
然后,我将无法知道在哪个元素寻找我的数据(),这正是我需要通过$这首先...;) – Gabriel 2012-02-21 22:49:23