悬停功能

时间:2012-04-24 16:32:26

标签: javascript jquery

jQuery("#markets_served").hover(function(){
    jQuery.data(document.body, "ms_height", jQuery(this).height());
    if(jQuery.data(document.body, "ms_height") == 35) {
        jQuery(this).stop().animate({height:'195px'},{queue:false, duration:800, easing: 'easeOutQuad'});
        jQuery("#btn_ms_close").css("display","inline");
    }
});

jQuery("#btn_ms_close").hover(function(){
    jQuery.data(document.body, "ms_height", jQuery("#markets_served").height());
    jQuery("#markets_served").stop().animate({height:'35px'},{queue:false, duration:800, easing: 'easeOutQuad'});
    jQuery(this).css("display","none");
});

悬停时出现问题。它不会工作。当鼠标超出悬停时显示的内容时,它不会悬停。

http://uscc.dreamscapesdesigners.net/ - 底部的例子“市场覆盖”

4 个答案:

答案 0 :(得分:2)

查看jQuery站点上的hover声明。您可以一次性为mouseover和mouseout事件指定处理程序。无需计算高度或将另一个处理程序绑定到出现的新div。

$("#markets_served").hover(
  function () {
    //do this when over
  },
  function () {
    //do this when out
  }
);

答案 1 :(得分:1)

使用就像:

$('#el').hover(function(e) { /* hover; */ }, function(e) { /* unhover */ });

这里是documentation

答案 2 :(得分:0)

当鼠标进入时,你增加了div的高度,但是当鼠标在div之外时你没有重置它,因此问题就出现了。

你应该这样做:

jQuery("#markets_served").hover(
    function(){
        jQuery.data(document.body, "ms_height", jQuery(this).height());
        if(jQuery.data(document.body, "ms_height") == 35) {
            jQuery(this).stop().animate({height:'195px'},{queue:false, duration:800, easing: 'easeOutQuad'});
            jQuery("#btn_ms_close").css("display","inline");
        } , 
    function(){
            jQuery.data(document.body, "ms_height", jQuery("#markets_served").height());
            jQuery(this).stop().animate({height:'35px'},{queue:false, duration:800, easing: 'easeOutQuad'});
            jQuery("#btn_ms_close").css("display","none");
        }


    });

答案 3 :(得分:0)

或者没有数据的简化:

jQuery("#markets_served").hover(function() {
    jQuery(this).stop().animate({height:'195px'},{queue:false, duration:800, easing: 'easeOutQuad'});
    jQuery("#btn_ms_close").css("display","inline");
}, function() {
    jQuery(this).stop().animate({height:'35px'},{queue:false, duration:800, easing: 'easeOutQuad'});
    jQuery("#btn_ms_close").css("display","none");
});