Изменить изображение по клику, с картой изображения
Я пытаюсь использовать одну карту изображений несколько раз. Идея в том, что у вас есть картинка с картой изображения. Вы нажимаете на одну область (на карте изображения есть выделение), вы получаете несколько ссылок, нажимаете одну и картинка меняется. Новое изображение использует ту же карту изображения, что и исходное (в изображении меняются только цвета).
Я попробовал решение, предлагаемое здесь: Jquery изменить изображение при нажатии
Но это не работает, потому что есть карта изображения. Мой код:
<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, потому что когда я убираю это, картинка меняется очень хорошо, но без выделения. В чем дело?
1 ответ
Когда работает maphilight, он оборачивает <img />
в <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;
});
К сожалению, тестов нет, но я уверен, что это сработает для вас. Надеюсь, поможет!