2010-10-04 239 views
0

您好我有一个使用jQuery 1.3.2工作正常的功能,但现在我试图运行它与1.4.2,我得到以下错误“事件未定义”。 这里是简化了代码:没有在鼠标悬停/鼠标悬停定义jQuery事件

<div id="mapcontainer><img href="" usemap="#rage_image_map"> 
    <div id="mytext"></div> 
</div> 
<map name="rage_image_map"> 
    <area shape="poly" href="asthma-data/county-asthma-profiles/del-norte-county-asthma-profile" coords="12,7,10,12" alt="Del Norte County"> 
    <area shape="poly" href="asthma-data/county-asthma-profiles/siskyou-county-asthma-profile" coords="42,3,42,6,40,8,36,11" alt="Siskyou County"> 
</map> 

这里是功能:

$(function() { 
    $('area').bind('mouseover mouseleave', function() { 
     var mytext = $('#mytext'); 
     if (event.type == "mouseover") { 
      var countyname = $(this).attr("alt"); 
      mytext.html(countyname); 
      mytext.addClass('textcontainer'); 
     } else { 
      mytext.text(''); 
      mytext.removeClass('textcontainer'); 
     } 
    }) 
}); 

类使得DIV可见mytext的内容,并把线周围,显示县名滑过。

萤火虫中的错误断点在定义mytext变量的行上。但我怀疑问题是低于语法问题:如果(event.type ==“鼠标悬停”)

感谢,利兹

回答

5

您需要命名事件参数,就像这样:

$('area').bind('mouseover mouseleave', function(event){ 
               ^add this 

这是一个有点更容易使用.hover()不过,像这样:

$(function() { 
    $('area').hover(function(){ 
    var countyname = $(this).attr("alt"); 
    $('#mytext').html(countyname).addClass('textcontainer'); 
    }, function() { 
    $('#mytext').text('').removeClass('textcontainer'); 
    }); 
}); 

这不正是相同,但好一点通常情况下,它使用mouseentermouseleave而不是mouseovermouseout(所以它不会在进入/离开儿童时触发)。

+0

谢谢,我的印象是绑定更好。这清除了差异。在这种情况下,有和将没有孩子...但这是一个独特的情况...通常他们做.. – liz 2010-10-04 17:34:16

+0

@liz - 这种方法适用于/不带孩子,我希望你会同意更容易在眼睛:)我倾向于坚持下去,但每个自己的,无论工程:) – 2010-10-04 17:37:06

+0

绝对同意。 – liz 2010-10-05 15:50:33