我正在尝试实现隐藏SVG的某些层的功能。 它有点工作,但对用户点击的反应是不一致的。有时候show-hide函数被调用,有时候没有任何事情发生。如果我双击svg中的文本被选中...如何实现更好的点击事件处理程序?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> Switch - demo</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.js"></script>
<script type='text/javascript' src="http://keith-wood.name/js/jquery.svg.js"></script>
<script type='text/javascript' src="http://keith-wood.name/js/jquery.svganim.js"></script>
<style type='text/css'>
#svgbasics { width: 600px; height: 500px; border: 1px solid #484; }
</style>
<script type='text/javascript'>//<![CDATA[
function drawOpenSwitch(svg){
//Boolean states for switches:
var f1closed = false;
var q1closed = false;
var changeSwitch = function (){
$('#closed3Pswitch').hide();
$('#closed3Prelay').hide();
$('#f1Button').click(function() {
if(f1closed == false){
$('#open3Pswitch').hide();
$('#closed3Pswitch').show();
}else{
$('#closed3Pswitch').hide();
$('#open3Pswitch').show();
}
f1closed=!f1closed;
});
$('#q1Button').click(function() {
if(q1closed == false){
$('#open3Prelay').hide();
$('#closed3Prelay').show();
}else{
$('#closed3Prelay').hide();
$('#open3Prelay').show();
}
q1closed=!q1closed;
});
};
svg.clear();
var switchElement=svg.load('./fullschema_connected_combined.svg', {onLoad: changeSwitch, addTo: true, changeSize: true});
}
$(window).load(function(){
$(function() {
$('#svgbasics').svg({onLoad: drawOpenSwitch});
});
});//]]>
</script>
</head>
<body>
<div id="svgbasics"></div>
</body>
</html>
答案 0 :(得分:0)
原来问题在于我使用的是带箭头的线条(Inkscape)...... q1Button的部分线条,但箭头不是。因此,只有当鼠标指针位于箭头下方的细线上方时,它才起作用。替换名为q1Button&amp;的数字组。 f1Button解决了这个问题。