Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 优化jQuery以避免Safari:&x201C;此网页使用了大量能量…”;_Javascript_Jquery_Performance - Fatal编程技术网

Javascript 优化jQuery以避免Safari:&x201C;此网页使用了大量能量…”;

Javascript 优化jQuery以避免Safari:&x201C;此网页使用了大量能量…”;,javascript,jquery,performance,Javascript,Jquery,Performance,我的网页上出现了Safari警告消息,但我只使用了少量自定义jQuery 这个网页使用了大量的能量。关闭它可能会提高Mac的响应能力 我在下面列出了我的jQuery,有人能建议这是否可能是原因吗?我看不出有什么具体的东西会占用大量资源并导致出现警告 我可以优化此代码以减少对用户的影响吗 jQuery(文档).ready(函数(){ jQuery('.fa-user-o')。单击(函数(){ jQuery('#modalBkg').fadeIn(300); }); }); jQuery(文档).

我的网页上出现了Safari警告消息,但我只使用了少量自定义jQuery

这个网页使用了大量的能量。关闭它可能会提高Mac的响应能力

我在下面列出了我的jQuery,有人能建议这是否可能是原因吗?我看不出有什么具体的东西会占用大量资源并导致出现警告

我可以优化此代码以减少对用户的影响吗


jQuery(文档).ready(函数(){
jQuery('.fa-user-o')。单击(函数(){
jQuery('#modalBkg').fadeIn(300);
});
});
jQuery(文档).ready(函数(){
jQuery('.fa乘以矩形')。单击(函数(){
jQuery('#modalBkg').fadeOut(300);
});
});
jQuery(文档).ready(函数(){
jQuery('.fa align justify')。单击(函数(){
jQuery('.aby粘滞菜单').slideToggle();
});
});
jQuery(函数($){
$(文档).on('click','li.vc_tta-tab a,li.vc_tta-tab,.vc_tta-panel-title',函数(){
$('html,body').stop();
});
});
jQuery(“.fa乘以矩形”).mouseover(函数(){
jQuery(“.modalBody.modalLeft”).animate({
不透明度:0.4
});
}).mouseleave(函数(){
jQuery(“.modalBody.modalLeft”).animate({
不透明度:1
});
});

这里的主要问题是使用
鼠标盖
,鼠标移动到事件附加到的元素上的每个像素触发一次。与动画结合使用时,对系统的要求可能非常高。更好的解决方法是使用
mouseenter
,这可以通过使用

比这更好的是使用CSS,但这需要
.modalBody
.modalLeft
元素是
.fa乘以矩形
的兄弟或后代,考虑到上下文,这似乎不太可能

还请注意,您不需要多个
script
标记,可以将它们组合成一个。类似地,您不需要多个document.ready事件处理程序,请将它们合并到一个中

综上所述,尝试以下方法:


jQuery(函数($){
$('.fa-user-o')。单击(函数(){
$('modalBkg')。法代因(300);
});
$('.fa align justify')。单击(函数(){
$('.aby粘滞菜单').slideToggle();
});
$(文档)。在('click','li.vc_tta-tab a,li.vc_tta-tab,.vc_tta-panel-title',函数()上{
$('html,body').stop();
});
$(“.fa乘以矩形”)。单击(函数(){
$('modalBkg')。淡出(300);
}).hover(函数(){
$(“.modalBody.modalLeft”).animate({
不透明度:0.4
});
},函数(){
$(“.modalBody.modalLeft”).animate({
不透明度:1
});
});
});

另一方面,我要检查对
$('html,body').stop()的调用是否真的在做任何事情,因此是必要的。这似乎是一件奇怪的事情,因为这意味着你在不断地为整个
主体设置动画,这也会导致性能问题。

你在
鼠标上方
处理程序中的每一个指针移动都会启动一个新的动画,即“连续”。您还应该只有一个
ready
处理程序,为什么要包装
单击
处理程序的定义(
on
调用)?您可能希望学习一些关于jquery的介绍性书籍、完整的api文档或教程。第一个问题是页面中还加载了哪些内容?感谢您提供的详细信息Rory,我敢肯定主要问题是使用了
mouseover()
;当单击
.vc\u tta-panel-title
容器时,
.stop()
也用于禁用默认的滚动效果。再次感谢您在此问题上的帮助:)