单击时将SVG元素替换为另一个
Replace an SVG element with another on click
嗨,我正在尝试用SVG格式从inkscape图像创建一些交互式内容。我正在通过SVG.load加载一个SVG文件http://keith-wood.name/js/jquery.svg.js
我想在加载的svg中添加一个onclick监听器,这样我就可以在单击后加载不同的svg。我该怎么做?下面评论中的方法失败了。
<script type='text/javascript'>
//<![CDATA[
function drawSwitch(svg) {
var switchElement = svg.load('./3phase_switch.svg', {
addTo: true,
changeSize: true
});
//switchElement.addEventListener("click", return function(){switchElement.setAttributeNS(null, "fill", "green");}, false);
}
$(window).load(function () {
$(function () {
$('#svgbasics').svg({
onLoad: drawSwitch
});
});
}); //]]>
</script>
由于元素是在页面加载时呈现的,您应该监听已经存在的父元素上的单击;例如document
:
// Use this same as $(document).ready()
jQuery(function( $ ){
// Listen for a click on the document but get only clicks coming from #svgbasics
$(document).on('click', '#svgbasics', function(){
// this === #svgbasics element
drawSwitch( this );
});
});
这就是我最终的做法,我通过Chrome开发工具检查了元素,并在SVG中找到了用作目标侦听器的元素的名称(#layer1)。使用下面的代码,我可以在两个不同的SVG 之间来回切换
function drawOpenSwitch(svg){
var closed=false;
var changeSwitch = function (){
$('#layer1').click(function() {
if(!closed){
svg.clear();
switchElement=svg.load('./3phase_switch_closed.svg', {onLoad: changeSwitch, addTo: true, changeSize: true});
}else{
svg.clear();
switchElement=svg.load('./3phase_switch.svg', {onLoad: changeSwitch, addTo: true, changeSize: true});
}
closed=!closed;
})};
var switchElement=svg.load('./3phase_switch.svg', {onLoad: changeSwitch, addTo: true, changeSize: true});
}
$(window).load(function(){
$(function() {
$('#svgbasics').svg({onLoad: drawOpenSwitch});
});
相关文章:
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 替换另一个变量对象中的变量值
- 用jQuery将字符串从一个类替换为另一个类
- 只要存在,就用另一个元素替换一个元素
- 将 url 中的一个字符串替换为另一个字符串
- 用另一个替换现有图像
- 单击时将SVG元素替换为另一个
- 我需要将一个参数从另一个任务传递给gullow任务,或者用runSequence调用的函数替换一个任务
- 用另一个没有ID的类移除/替换类-仅限Javascript
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- 我正在尝试用另一个字符串替换一个字符串
- 替换对象's的属性与另一个的属性相比较
- 在不同的html文件中将html从一个元素替换为另一个元素
- 另一个未捕获的类型错误::无法读取属性'替换'的未定义
- 上传文件时,一个文件不应被另一个文件替换
- 如何替换另一个吸引人的吸引力值
- 在node.js中用一个模块替换另一个模块
- 如何让angular指令包含&替换另一个指令
- 如何在JS中用一个词替换另一个词
- 替换另一个变量中所述的属性名称