我正在编写一个jQuery插件,它涉及将事件绑定到window.scroll.
window.scroll中执行的操作取决于调用原始初始化时传入的设置.
如何在绑定事件中访问数据元素?
(function($) {
var methods = {
init : function(options) {
return this.each(function() {
$(window).bind("scroll.myPlugin",methods.windowOnScroll);
});
},windowOnScroll : function() {
var $this = $(this);
var data = $this.data("scrollingLoader");
if (data.something) {
// ...
}
}
})(jQuery);
最佳答案
jQuery提供了一个方便的函数$.proxy,它可以实现跨浏览器的功能绑定.
(function($) {
var methods = {
init : function(options) {
return this.each(function() {
$(window).bind("scroll.myPlugin",$.proxy(methods.windowOnScroll,methods));
});
},windowOnScroll : function() {
var $this = $(this);
var data = $this.data("scrollingLoader");
if (data.something) {
// ...
}
}
})(jQuery);
$.proxy函数返回一个函数,该函数将始终执行第二个参数上下文中第一个参数传递的函数. http://api.jquery.com/jQuery.proxy