#jquery #html #maps
#jquery #HTML #Карты
Вопрос:
Я создал карту изображений и хочу выделить области карты при наведении курсора мыши. Для достижения этого я написал следующий код.
JS:
<script type="text/javascript">
$(document).ready(function(){
$('#Map area').hover(function(){
alert('alert');
$(this).css('border','1px solid #FF0000');
});
});
</script>
HTML:
<div id="mainmap"><img src="images/map.jpg" alt="" usemap="#Map"/></div>
<map name="Map" id="Map">
<area shape="poly" coords="21,326,203,316,220,141,52,153,48,182,37,193,29,220,27,241,28,255,33,259" href="#" alt="1" />
<area shape="poly" coords="31,405,209,410,225,427,336,427,337,360,200,359,208,317,21,326,15,344,41,360" href="#" alt="11" />
</map>
Когда я наведу курсор мыши на область, она предупреждает дважды, в то время как я думаю, что она должна предупреждать один раз. Также функция.css(), похоже, не работает с этим селектором.
Пожалуйста, укажите, как я могу исправить
Ответ №1:
Вам нужно понять, что <map>
означает, это простое определение областей щелчка изображения
говоря, $(this).css('border','1px solid #FF0000');
вы хотите, чтобы у <map>
были сплошные границы, но <map>
это точно так же, как у <head>
элементов, они содержат только определения.
Чтобы создать границы в областях, вам действительно нужно иметь 2 изображения вместо этого.
Ответ №2:
Кажется, что при перемещении мыши в области карты появляется предупреждение, в этот момент ваша мышь находится вне области карты, поэтому onmouseleave
событие было запущено, так что их два alerts
. если вы замените их на console.log
, все должно быть в порядке. Протестируйте это здесь:http://jsfiddle.net/8ZXb9