懒加载/懒计算的JQuery插件?

4
有这样的jQuery插件吗?
更具体地说: 我想使用一些优雅且简单的方式,将某些代码的执行推迟到真正需要时(某个事件发生)。当此事件发生时,推迟的代码应该仅执行一次。某种懒惰初始化。
例如,在用户悬停在元素上时,不要在文档准备就绪时应用某些动画效果。
我知道如何手动完成它,但我不喜欢它,因为我必须考虑在执行匿名函数之前检查和设置“initialized”标志。我想知道是否已经有了这样的插件(无错误,带有一些美味的功能)。
3个回答

4

有趣的发现。但是我有一个问题。抱歉,你在寻找这个东西上花了多少时间而不是编码呢? ;) - jitter
6
实际上只需要大约5分钟。这不是节省时间的问题,而是纯粹出于开发者的好奇心和愿意交流的精神。这就是stackoverflow存在的目的,不是吗? :) - Anton Kuzmin

2

回答更具体的问题:

你真的不需要任何插件,只需按照以下方式操作。

这将在用户单击带有id lazyelement的元素时触发postponedHeavyFunction()函数,并仅触发一次。

function postponedHeavyFunction() {
    // unbind. This guarantees that postponedHeavyFunction will only
    // execute once for the event we bound it to #lazyelement
    $("#lazyelement").unbind('click', postponedHeavyFunction);
    ...
    //do whatever 
    ....
}

//when event is triggered the function you specify gets run
$("#lazyelement").bind('click', postponedHeavyFunction);

请查看http://jsbin.com/agora/以查看一个死脑筋演示。


您到底想要什么?应该延迟加载/延迟评估什么?请更具体。

据我所知,懒惰评估(如其他语言中所知)本身在JavaScript中不受支持(作为语言概念)。 除非可能是像&|&&||这样的运算符。

如果您只想使用某些javascript来延迟加载其他脚本,请查看此内容:使用LazyLoad轻松延迟加载JavaScript


编辑了我的问题,现在更具体了。 - Anton Kuzmin
@Justin Johnson:我猜你说的是LazyLoad脚本。你尝试过它在IE8中是否可用吗?我想它可能没有测试过较新版本的IE8、Chrome和Opera10。或许你可以联系作者并建议更新支持的浏览器版本信息。 - jitter
嗯...是的,有jQuery.one (http://docs.jquery.com/Events/one#typedatafn)可以做同样的事情,并且运行良好。不幸的是,在非常规情况下无法帮助。 - Anton Kuzmin

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接