2012-04-17 4 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は、私はそれを得ることができますどのようにオブジェクトを必要

関数をネストするときは、次のように別の変数に thisを保存する必要があり

答えて

4

:?

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

thisがあります関数のコンテキストでは、デフォルトでグローバルオブジェクトwindowです。 jQueryは、関数を呼び出すときに便利なものに設定します(例えば、.each()の要素)。ただし、interval関数が呼び出されると、thisは再度アンバインドされます(=>this === window)。カスタム変数に保存することで、関数の終了時に保存されます。

+0

感謝トンthiefmasterを:) – user1184100

0

ただ、jQueryオブジェクトに変換:

var $elm = $(elm); 
関連する問題