0

我在网站上有一个 SVG 图像地图 - 我有 SVG 内联。现在我想添加替代内容,因此决定使用 <object> 方法并将 SVG 放在一个外部文件中,这样我就可以在 <object> 中放置一个图像标签。问题是我从 SVG 的 onmouseover、onmouseout 参数调用 JavaScript 函数——而这些 JS 函数使用 JQuery。这些函数被调用得很好,但我得到 $ 没有定义。正在加载 JQuery...

我在这里有一个测试页面: http ://www.kollegetown.com/themes/kollegetown/test.htm

如果您打开控制台,如果您翻转热点,您将看到 $ is not defined 错误。

任何想法表示赞赏。

4

2 回答 2

0

当然你需要加载 jQuery。将以下行添加到 SVG:

<script type="text/javascript" xlink:href="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"/>

那应该做的工作。

于 2012-12-04T20:16:09.890 回答
0

在我看来,更优雅的解决方案是使用 CSS3 动画而不是 jQuery(参见 Tinkerbin):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="956px" height="745px" >
  <style type="text/css">
    a > image {
      opacity: 0;
      pointer-events:none;
      transition: opacity .25s ease-in-out;
      -moz-transition: opacity .25s ease-in-out;
      -webkit-transition: opacity .25s ease-in-out;
    }

    a > polygon {
      opacity:0;
    }

    a:hover > image {
      pointer-events:auto;
      display:inline;
      opacity: 1;
    }
  </style>

  <image x="0" y="0" width="956" height="745" xlink:href="http://www.kollegetown.com/themes/kollegetown/images/img1.jpg" />

  <!-- stadium/team -->
  <a xlink:href="/team" target="new">
  <image id="team" x="63" y="284" width="204" height="365" xlink:href="http://www.kollegetown.com/themes/kollegetown/images/homeRollover_team.jpg"/>
    <polygon points="189 383, 185 345, 155 316, 209 281, 211 244, 289 210, 291 241, 348 245, 397 290, 391 299, 344 276, 345 369, 365 385, 330 404, 313 438"/>                   
  </a>

  <!-- corporate -->            
  <a xlink:href="/corporate" target="new">
  <image id="corp" x="33" y="29" width="356" height="221" xlink:href="http://www.kollegetown.com/themes/kollegetown/images/homeRollover_corporate.jpg"/>
    <polygon points="18 126, 86 125, 186 180, 190 271, 99 327, 31 330, 18 321"/>                    
  </a>

  <!-- campus shops -->
  <a xlink:href="/campusbooster" target="new">
  <image id="shops" x="423" y="186" width="497" height="213" xlink:href="http://www.kollegetown.com/themes/kollegetown/images/homeRollover_shops.jpg"/>
    <polygon points="425 60, 427 209, 470 226, 469 246, 483 251, 506 235, 534 244, 595 214, 600 191, 612 188, 621 201, 633 196, 631 23, 624 17, 504 17"/>                   
  </a>

  <!-- art gallery / design -->
  <a xlink:href="/designs" target="new">
  <image id="design" x="496" y="407" width="331" height="321" xlink:href="http://www.kollegetown.com/themes/kollegetown/images/homeRollover_gallery.jpg"/>
    <polygon points="503 509, 438 547, 440 691, 481 710, 482 729, 647 729, 647 582"/>
  </a>

</svg>

Opera 有一个小故障,它不会使过度图像对悬停时的鼠标事件敏感。但是用户仍然可以点击建筑物来跟随链接。无法测试 IE9(我的 Win7 笔记本有问题)。

于 2012-12-05T14:13:39.077 回答