[英]jQuery hover on imagemap does not work
I have an imagemap and want to add a jQuery hover. 我有一个图像映射,想要添加一个jQuery悬停。 Basically the whole image shall be replaced with a new one, based on an imagemap.
基本上,整个图像应根据图像映射表替换为新的图像。 Hovering on certain parts of the image shall result in replacing the image completely.
将鼠标悬停在图像的某些部分将导致完全替换图像。 On a mouseout of the mapped areas, it shall flip back to the imagemap.
当鼠标移出映射区域时,它将翻转回到图像映射。 It works fine doing the imageflip with javascript, but I want to change it to jQuery in order to have mor control about the
fadeIn
and stuff like this. 使用javascript进行imageflip效果很好,但是我想将其更改为jQuery,以便对
fadeIn
和类似的东西进行mor控制。 It just seems easier in jQuery. 在jQuery中似乎更容易。
Here is what Ive got. 这就是我得到的。
<html>
<head>
<!-- LINK ZU JQUERY ONLINE-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
//PRELOAD THE IMAGES
original = new Image(698, 360);
original.src = "imagenes_png/bosque_mapa.png";
azul = new Image(698, 360)
azul.src = "imagenes_png/azul_mouse.png";
verde = new Image(698, 360)
verde.src = "imagenes_png/verde_mouse.png";
//jQUERY HOVER
$(document).ready(function(){
$("#verdeA").hover(function() {
$(this).attr("src" , "verde.src");
}, function() {
$(this).attr("src" , "original.src");
$("#azulA").hover(function() {
$(this).attr("src" , "azul.src");
}, function() {
$(this).attr("src" , "original.src");
});
});
});
</script>
<body>
<!-- INSERT THE PICTURE -->
<img name="bosque" id="bosque" src="imagenes_png/bosque_mapa.png" width="698" height="360" border="0" usemap="#bosque_m" alt="Bosque con animales" />
<map name="bosque_m" id="bosque_m">
<area id="verdeA" shape="poly" coords="643,324,646,322,648,321,651,320,654,320,656,321,658,323,659,324,660,327,659,330,657,332,655,334,654,335,654,332,653,329,653,327,650,326,648,328,648,331,649,332,650,334,652,335,654,337,656,338,658,339,660,341,662,342,662,345,661,348,660,350,657,351,656,351,656,346,656,345,653,347,651,350,650,351,651,353,651,354,653,356,656,356,658,356,660,356,662,356,666,354,668,351,669,349,670,347,669,346,665,346,666,342,667,341,668,340,670,339,672,339,674,341,676,344,676,347,675,351,672,355,670,357,669,360,642,360,644,356,646,353,647,350,648,346,650,340,650,337,646,332,645,330,644,327,643,324"
alt="" />
<area id="azulA" shape="poly" coords="472,249,476,249,479,250,483,251,484,255,485,258,487,261,489,263,493,265,498,266,501,268,504,270,504,271,499,270,495,269,489,268,486,269,484,270,480,269,476,268,473,266,470,262,469,260,468,256,470,253,472,249"
alt="" />
</map>
</body>
</html>
First I preload the images that the imageflip works without delay. 首先,我预加载了imageflip可以正常工作的图像。 Then I delcare the jQuery function, based on the id in my imagemap and then I add the names of the pictures assigned in the preloading.
然后,我基于图像映射中的id来对jQuery函数进行delcare,然后添加在预加载中分配的图片的名称。
Buut, it does not work, at all. Buut,它根本不起作用。 Nothing is happening.
没事
Where is the mistake? 错误在哪里?
There are two problems: 有两个问题:
$(this)
in your hover
handlers, $(this)
is referring to your <area>
elements, not your <img>
. hover
处理程序中引用$(this)
时, $(this)
引用的是<area>
元素,而不是<img>
。 You'll want to refer instead to $("#bosque")
. $("#bosque")
。 src
attribute to the actual strings verde.src
, azul.src
and original.src
. src
属性设置为实际的字符串verde.src
, azul.src
和original.src
。 It's as if you were saying <img src="verde.src">
, which is not what you want. <img src="verde.src">
,这不是您想要的。 Remove the quotes from around those strings, as in: $("#bosque").attr("src", verde.src");
so that you are setting src
equal to the src
property of the verde
object and not just to a relative URL that is broken. $("#bosque").attr("src", verde.src");
以便将src
设置为等于verde
对象的src
属性,而不仅仅是相对URL已损坏。 So the hover section becomes this: 因此,悬停部分变为:
$(document).ready(function(){
$("#verdeA").hover(function() {
$("#bosque").attr("src" , verde.src);
}, function() {
$("#bosque").attr("src" , original.src);
$("#azulA").hover(function() {
$("#bosque").attr("src" , azul.src);
}, function() {
$("#bosque").attr("src" , original.src);
});
});
});
Which only reacts to the mapped areas: 仅对映射区域做出反应:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.