2012-04-17 54 views
1

这里是我的插件的代码..

$.fn.slide = function(settings) { 

return $(this).each(function() { 
    setInterval(function() { $.slider(opt.direction , opt.slideSpeed,this) } 
} 

jQuery.slider = function(direction,slideSpeed,elm) { 
     console.log(elm) - > shows DOMWindow[] window as object 
    } 

} 


script.js 
$('#container').slide({ 
    slideAnimationTimeInterval : 6000, 
    slideSpeed : 700, 

}); 

的console.log(榆树) - >显示DOMWindow []窗口对象,但我需要的#container反对我怎样才能得到它

回答

4

当嵌套功能,你需要在另外一个变量保存this是这样的:

return $(this).each(function() { 
    var self = this; 
    setInterval(function() { $.slider(opt.direction , opt.slideSpeed, self); } 
} 

this是函数的上下文,默认情况下它是全局对象window。调用函数时,jQuery将它设置为更有用的东西(例如.each()中的元素)。但是,如果调用间隔函数,则this再次解除绑定(=>this === window)。通过将其保存在一个自定义变量中,它会保存在函数的关闭中。

+0

感谢一吨thiefmaster :) – user1184100 2012-04-17 10:08:02

0

只要将它转换成一个jQuery对象:

var $elm = $(elm); 
相关问题