考虑在页面上使用数千个常规输入按钮(使用jQuery .button()UI)和输入文本。
在Firefox上,如果我点击按钮,则会立即触发点击事件。
但是,如果我将所有这些对象放入jQuery选项卡中,则需要一些时间来打开选择菜单或触发单击按钮。
在Chrome上,无论有没有标签,一切都会立即触发。
请在Firefox上查看此链接http://jsbin.com/awubo3/5/edit,然后删除对标签的评论,然后重试。启用标签后,按钮会稍微触发。
在我的页面上更糟糕,有时需要3-4秒才能触发点击,或者打开选择菜单。
是否可以解决此问题?
答案 0 :(得分:0)
该页面肯定存在一些性能问题。由于您正在进行密集的工作,您将亲眼看到javascript引擎实现之间的性能差异。除了尝试找到一种更有效的方法来做你想做的事情之外,你无能为力。
例如,您可以保持代码体系结构相同,但减少页面上的元素数量。实现某种寻呼解决方案,允许用户访问所有记录,但限制查看的数量,以便性能可以接受。
如果必须同时显示所有信息,请考虑使用您正在使用的jquery UI元素的较轻重量版本。实现'tabbing'系统可以非常轻量级(here is an example,只需很少的代码行)。如果您纯粹出于样式原因使用UI按钮,请查看单独使用css可以实现的效果。
答案 1 :(得分:0)
jQuery,尽管它具有所有优势,但却需要很长时间才能完成任务。考虑$(#element)与getElementByID。后者内置于javascript中,如果你有很多,运行纯javascript更快。但是jQuery选择器经历了一堆jQuery函数调用。此外,通过我发现jQuery也克隆了很多。假设您在单击处理程序中给它一个匿名函数.jQuery不仅仅附加事件并完成它。相反,它需要该函数,运行一堆isString,isObject,isArray,最后是isFunction。一旦它发现它是一个函数,它将它分开并在私有内部函数中重建整个事物,然后它可以将它附加到事件。