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(elm)-> DOMWindow []ウィンドウをオブジェクトとして表示しますが、#containerオブジェクトが必要です。どうすれば取得できますか?

4

2 に答える 2

4

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

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

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

于 2012-04-17T09:48:45.943 に答える
0

jQuery オブジェクトに変換するだけです。

var $elm = $( elm );
于 2012-04-17T09:48:51.347 に答える