3

1 つのイメージ マップを複数回使用しようとしています。アイデアは、イメージマップ付きの写真を持っているということです。1 つの領域 (イメージ マップにハイライトがあります) をクリックすると、いくつかのリンクが表示されます。1 つを押すと、画像が変更されます。新しい画像は、元の画像と同じ画像マップを使用しています (画像の色だけが変わります)。

ここで提供されているソリューションを試しました: Jquery change image on click

しかし、イメージ マップがあるため、機能しません。私のコードは次のとおりです。

    <script type="text/javascript" src="jquery.maphilight.js"></script>

<script type="text/javascript">$(function() {
        $('.map').maphilight();
    });</script>
 <script type="text/javascript src="src="http://code.jquery.com/jquery-latest.js"></script>

 <script>
  $(document).ready(function () {
    $('#area1').click(function () {
        $("#areaOne").show();
    });
    $('#area2').click(function () {
        $("#areaTwo").show();
    });
});
$(function() {
 $('#areaOne').click(function(){
   $("#pic").attr('src',"pic2.jpg");
   return false;
 });
});
   </script>


<img class="map" id="pic"  src="pic.jpg" width="800" height="533" border="0"  usemap="#map" />

<map name="map" >
<area  shape="poly" id="area1" coords="201,316,220,324,257,350,290,385,315,423,329,456,297,466,235,476,194,479,158,481,128,474,101,453,94,440,93,426,96,411,114,389,137,367,168,342" href="javascript:myFunction(1)" />
<area shape="poly" id="area2"coords="204,315,226,324,254,345,288,379,313,414,330,455,380,439,446,409,489,368,517,329,541,300,580,266,581,254,567,241,549,240,531,242,514,250,489,264,465,282,441,298,416,306,394,303,348,283,323,264,296,236,246,285" href="javascript:myFunction(2)"/>
</map>
<br />

<div id="pushnshow">
Click on Image Map and you will see<br />
<div id="areaOne" class="areaOne "style="display: none" >this </div>
<div id="areaTwo" style="display: none">and this</div>

<br />

問題は usemap=#map にあるようです。これを取り除くと、画像はうまく変化しますが、強調表示されません。どうしたの?

4

1 に答える 1

4

maphilight を実行すると、<img />が a でラップされ、<div class="map" />が非表示になり<img />ます。次に、イメージを背景として新しいラッピングに追加します<div class="map" />

コードを機能させるには、次のように変更します。

 $('#areaOne').click(function(){
   $("#pic").attr('src',"pic2.jpg");
   return false;
 });

これに:

 $('#areaOne').click(function(){
   $("#pic").attr('src',"pic2.jpg");
   $("#pic").parent().css('background-image',"url(pic2.jpg)");
   return false;
 });

残念ながらテストケースはありませんが、うまくいくと確信しています。それが役に立てば幸い!

于 2012-12-05T23:50:58.263 に答える