使用 jQuery.svg,我尝试将一长串 SVG 文件动态加载到网站上的相应抽屉中。我成功地正确加载了它们,但是,当它们全部加载时,网站上的任何点击都会延迟至少 2 秒。
当svg.load函数被删除时,网站非常快。
这是jQuery:
function initFloorPlans(){
$('.list-item', '#tab1').each(function(){
var zoneID = $(this).attr('data-value');
$(this).find('.svg-load').svg();
svg = $(this).find('.svg-load').svg('get');
var path = "svg/thumbs/"+zoneID+".svg";
svg.load(path,{
addTo: false,
changeSize: true
});
});
}
这是一个 HTML 示例:
<div id="tab1">
<div class="list-item" data-value="zone1-1">
<div class="svg-load"></div>
</div>
<div class="list-item" data-value="zone1-2">
<div class="svg-load"></div>
</div>
<div class="list-item" data-value="zone1-3">
<div class="svg-load"></div>
</div>
<div class="list-item" data-value="zone1-4">
<div class="svg-load"></div>
</div>
<div class="list-item" data-value="zone1-5">
<div class="svg-load"></div>
</div>
<div class="list-item" data-value="zone1-6">
<div class="svg-load"></div>
</div>
</div>
我不确定以上信息是否足以提供明智的答案,但是如果您看到任何可疑内容,或者是否可以推荐我可以开始检查代码的区域,我们将不胜感激。
文件名为 (zone1-1.svg)、(zone1-2.svg) 等。
具体问题:如果有一些挥之不去的事件正在发生,是否有一个特定的成功函数可以澄清问题?
谢谢!
根据约瑟夫凯西的要求,这是函数调用:
$(window).load(function(){
initFloorPlans();
});
事实证明,该功能本身完全没问题。真正的问题是SVG文件被损坏了,只是在我用adobe Illustrator删除了每个文件周围的空白(只是使用了画板复选框)之后。
我不确定此解决方案是否适用于面临此类问题的任何人,但是,值得考虑的是 SVG 已损坏的事实。
我现在正在加载几百个 SVG,绝对没有问题。
谢谢!