我创建了一个处理图像延迟加载的 jQuery 小部件。当滚动条发生变化时,检查每个图像是否可见,如果可见,则加载该图像。
我的小部件是这样的。
_create : function() {
var self = this;
if(self.isVisible())
{
self.load();
}
else
{
$(window).bind('scroll.'+self.widgetName,self.checkScroll);
}
},
checkScroll : function() {
var self = this;
if(self.isVisible())
{
$(window).unbind('scroll.'+self.widgetName,self.checkScroll);
self.load();
}
},
如果最初图像在视口中可见,则它已加载,但如果不是,则滚动条事件绑定到小部件的checkScroll
功能。
我的问题是unbind
所有小部件都是全局的。因此,一旦加载了第一个惰性图像,其他图像都不会被checkScroll
调用。
如何绑定/取消绑定正在使用小部件的特定元素的事件,而不是所有小部件?
还是我做错了,有更好的方法吗?