JQuery click()部分SVG对象不一致

时间:2013-12-17 10:36:18

标签: javascript jquery svg

我正在尝试实现隐藏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>

1 个答案:

答案 0 :(得分:0)

原来问题在于我使用的是带箭头的线条(Inkscape)...... q1Button的部分线条,但箭头不是。因此,只有当鼠标指针位于箭头下方的细线上方时,它才起作用。替换名为q1Button&amp;的数字组。 f1Button解决了这个问题。