我想在scrollTop
到达特定位置时重新加载svg文件。 Svg使用object
标记添加到html页面。
html代码
<section class="section" id="svg-scroll">
.....
<object type="image/svg+xml" data="http://reussis.com/demo/vardan/svg/icons_-04.svg"></object>
....
<object type="image/svg+xml" data="http://reussis.com/demo/vardan/svg/icons_-03.svg"></object>
.....</section>
脚本
$(document).ready(function(){
svg_scroll_function();
$(window).scroll(function() {
svg_scroll_function();
});
})
function svg_scroll_function() {
var scroll = $(window).scrollTop();
if (scroll >= ($('#svg-scroll').offset().top -80)) {
$('object').reload();// Here i want to reload something
}
}
答案 0 :(得分:1)
仅限一次,将root中的first_time
var设置为true;
var first_time = true; //this should be outside of scroll function
...
if(first_time){
$('object').each(function(index,el){
$(el).attr('data', $(el).attr('data'));
});
first_time = false;
}
答案 1 :(得分:0)
要重新加载objects
中的文件,您必须获取对这些元素的引用,然后更新其data
属性。
在下面的示例中,我们抓取DOM中的每个object
并通过将其data
属性重置为已有的值来重新加载它们:
var objects = document.getElementsByTagName("object");
for(var i = 0; i < objects.length; i++) {
var obj = objects[i];
obj.data = obj.data // will trigger update
}
如果不是更新DOM中的每个object
,而是希望只更新一个,那么为该对象提供id
属性(即swf-obj
)并设置其{{1 }}属性为其当前值:
data