2012-08-02 106 views
0

我想创建悬停效果与回调函数。看起来效果只能在回调函数上触发,而不能在init悬停中触发。我想知道这里有人能帮助我。非常感谢。Jquery回调函数问题

$("img").live("hover", function() { 
    // hover in 
    $(this).css("z-index", 1); 
    $(this).animate({ 
     height: "35%", 
     width: "35%", 
     left: "-=50", 
     top: "-=50" 
    }, "fast"); 
}, function() { //only the following codes will be triggered. 
    // hover out 
    $(this).css("z-index", 0); 
    $(this).animate({ 
     height: "15%", 
     width: "15%", 
     left: "+=50", 
     top: "+=50" 
    }, "fast"); 
}); 

的IMG通过Ajax调用产生的,不知道这是否是相关

<div id='image_layout'> 
    <img src='a.jpg' /> 
    <img src='b.jpg' /> 
    <img src='c.jpg' /> 
</div> 
+0

只有['.hover()'](http://api.jquery.com/hover /)速记支持2个这样的功能。 '活着'不会那样工作。 – 2012-08-02 17:05:04

回答

3

live()已被弃用,这一点儿也不真正工作方式,但如果你使用jQuery 1.7+你应该使用on()将事件委托给最接近的非动态父级,我将在示例中使用document,您将替换document与最接近图像的父节点,该节点不是用Ajax插入的,可能#image_layout如果该元素是没有动态插入:

$(document).on({ 
    mouseenter: function() { 
     $(this).css("z-index", 1).animate({ 
       height: "35%", 
       width: "35%", 
       left: "-=50", 
       top: "-=50" 
      }, "fast"); 
    }, 
    mouseleave: function() { 
     $(this).css("z-index", 0).animate({ 
       height: "15%", 
       width: "15%", 
       left: "+=50", 
       top: "+=50" 
      }, "fast"); 
    } 
}, "img"); 

另一方面,在动画中使用+=和百分比会在很多情况下导致你的悲伤。

+0

对于我的高度和宽度,没有+ =,你会推荐什么?非常感谢。 – Rouge 2012-08-02 17:17:01

+0

如果你在控制你的CSS,元素等的定位以及现在如何工作,百分比通常很好。 + =可能会导致问题,特别是在使用stop()时,但它有时可能会有用,所以这真的取决于您。如果它工作,对你来说很好,否则使用像素值是我的意见中问题最少的选项。 – adeneo 2012-08-02 17:51:25

1

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。老版本的jQuery用户应优先使用.delegate(),而不要使用.live()。

试试吧!

而且你PARAMS是错误的,第二个PARAM应该是数据NOG某种回调的更多信息请参见:http://api.jquery.com/live/