2011-04-14 55 views
1

我们有一个应用程序,它使用了很多jquery的东西,我们将所有的脚本添加到一个init.js文件中,这个文件有很多.live("click"), .live("hover")等等,东西加上一些if($(".classname").length)添加.live点击jQuery中的函数

我怀疑它可能会不必要地减慢我们的页面(有些页面不需要一些脚本)。但是什么是更优雅的解决方案呢?我们当然不会为每个需要它的页面单独提供一个文件,这是一个很难维护的问题。有没有其他方法可以实现这一点?

+0

http://jscompress.com/ – Calum 2011-04-14 08:31:47

+0

我不认为jscompress会在这一项上做得更好,因为它可能放缓的原因是处理所有这些现场调用 – corroded 2011-04-14 09:34:20

回答

3

在函数中包装页面特定的东西,并在每个页面上调用适当的函数。

另一种解决方案是将URL映射到函数并自动调用适用于当前URL的函数 - 然后在页面本身上不需要任何JS。

为您现场直播,你可以在身上使用委托,给身体一个特定的页面级:$('body.page-xyz').delegate('your-live-selector', 'click', function(){...})

这仅如果身上有正确的类附加一个事件处理程序。

+2

+1我输入的内容很多。 :-)第二个选项对我来说有点过于紧密,所以我更喜欢在每个页面上都有一个内联脚本块来触发适当的设置,但是我也会将它作为一个选项加入,以防OP对此感觉不同。 – 2011-04-14 08:33:00

+0

嗯,我会更多地关注这个委托事项。所以委托只是首先寻找身体的课程?它的功能是否与它也附加到动态创建的元素中一样? – corroded 2011-04-14 09:36:20

0

你可以使用getScript加载其他js文件。

+1

你可以,如果你想有进一步的HTTP请求开销。最佳做法是*最小化* HTTP请求。 – 2011-04-14 08:33:41