我在我的项目中使用SVG,并希望在单击时在文本路径元素上使用jQuery切换toggleClass。

所以我在想:

$("text#names > textpath").click(function() {
    $(this).toggleClass("newClass");
});


在HTML来源上:

<text id="names" class="clickthrough">
    <textpath class="zoom1" href="#text1" font-size="12.1"></textpath>
    <textpath ... </textpath>
</text>


但是什么也没发生。如果执行$("text#names"),我将获得课程点击率。这样就可以了,只是jQuery可能不知道textpath。因此,我找到了http://keith-wood.name/svgref.html,但是在使用它之前,我想确定我的情况是否真的需要它。

最佳答案

jQuery的.class不适用于SVG元素,您必须使用attr代替:

$("text#names > textpath").click(function() {
  $(this).attr("class", function(_, val){
    return (val.indexOf("newClass")+1) ? val.replace(" newClass","") : val+" newClass";
  });
});


检出the jsFiddle demo

08-15 15:29