在Snap SVG加载函数中使用jQuery

时间:2014-10-25 13:49:07

标签: javascript jquery svg snap.svg

所以我有这个问题。我想用Snap库创建一个页面,但我没有找到任何方法来选择所有元素,除了我之前的那个元素。徘徊过来。 JQuery应该对这些东西很好,但我不知道如何在SVG Snap加载函数中运行它:/我的代码是:

<script>
var s = Snap("#svg");
Snap.load("fin.svg",onSVGLoaded);

function onSVGLoaded(d){
    var all = d.selectAll(".plasmid");
    s.append(all);
    var mono = s.select("#mono");
    mono.drag();

$(mono).click(function(){
    $(this).fadeOut("slow");
    });
};
</script>

其中fin.svg是外部svg文件,.plasmid是svg文件中的一个类,图形和单声道的所有部分都是图形的一部分。 mono.drag()部分正在运行,但jQuery的东西不行。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果你有这个:

<object class="someselector" data="external.svg"></object>

你可以使用jQuery:

<script>
$(window).load(function(){
    var a = ($(".someselector").contents().find('svg'))[0];
    var s = Snap(a);
    var something = s.someSnapfunctions();
    });
</script>

对于iframes和svg,请始终使用$(windows).load和contents()

你可以在$(window).load中使用jQuery的函数:

$('.someselector').load(function(){
// do something

var b = ($(".someselector").contents().find('svg').find('anotherselector'));
b.each(function(){
    Snap($(this)[0]).attr({
         fill: "#bada55" // change color!
    });
});