私の最初のプラグインは適切なアーキテクチャで実行されましたが、イベントリスナーを$(window).scrollに適用して、globalMessageをウィンドウの上部に固定する方法に固執しています。進行中の完全なプラグインはhttps://gist.github.com/937792で確認できますが、関連するビットは以下のinitです。
ターゲット要素のcssプロパティを変更するウィンドウイベントリスナーを設定するための最良の方法は何ですか?
(function($){
var methods = {
init: function(options) {
var $this = this;
var opts = $.extend({}, $.fn.globalMessage.defaults, options);
var data = $this.data('globalMessage');
// init global data
if ( ! data ) {
$this.data('globalMessage', {
settings : opts
});
$(window).bind("scroll.globalMessage", function() {
// ----------
// HOW TO ACCESS both $this (defined outside this context)
// and the scrollTop value to change top css val?
//-----------
$this.css("top", $(window).scrollTop());
});
$this.bind('click.globalMessage', methods.hide);
}
return $this;
},
...[other funcs]...
}
...[main entry point etc]...
})(jQuery);