![](/img/trans.png)
[英]Why is event binding in jQuery so much slower than native javascript?
[英]My jQuery is noticeably slower than native JS
我已经用jquery重写了菜单处理,突然之间所有菜单似乎都需要花费更长的时间才能打开。 使用本机JS时,按下触发器后立即播放开始幻灯片动画,而使用jQ则需要一整秒钟才能打开菜单。 此后,我将所有代码都移回了本机,但这是我在开始时使用的基本功能。
jQuery版本:
$("#apis_trigger").click(function() {
$("#apis_menu").switchClass(dstart, dend);
$("#apis_trigger .down_arrow").css("transform", "scaleY(-1)");
});
本机JavaScript:
document.getElementById("apis_trigger").onclick = function() {
document.getElementById("apis_menu").classList.remove(dstart);
document.getElementById("apis_menu").classList.add(dend);
document.querySelector("#apis_trigger .down_arrow").style.transform="scaleY(-1)";
}
我只是查询选择器和切换类,所以我没想到这种性能会受到影响。
阅读此线程后,我知道性能下降
这是当我们使用简单的$('selector')时jquery经历的代码量
但是通过阅读其他线程,我认为这只会在较大的脚本中才显而易见。
仅供参考,我正在i7 2.3ghz w / 9gb ram的Chrome中运行此程序。
switchClass默认情况下对所有属性进行动画处理,持续400 ms。 您应该使用$(“#apis_menu”)。removeClass(dstart).addClass(dend)进行“公平”比较。
– Yury Tarabanko 5分钟前
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.