将变量从悬停传递到offhover

时间:2012-05-18 18:37:31

标签: javascript jquery variables hover

http://jsfiddle.net/MwQbE/

我有jQuery下面但我不能将变量传递给第二个函数

$("img").hover(function(){
    var $image = $(this);
    var $imageNowWidth = $image.width();
},function() {
    // get variable value for $image and $imageNowWidth   
});​

在jsFiddle上测试它不起作用时,我该怎么做才能将变量传递给第二个函数?

4 个答案:

答案 0 :(得分:4)

只需在.hover之外定义这两个变量,然后就可以在mouseleave函数中使用它们。见下文,

var $image, $imageNowWidth;
$("img").hover(function(){ //mouseenter
   $image = $(this);
   $imageNowWidth = $image.width();
},function() {            //mouseleave
    //$image and $imageNowWidth is accessible HERE
});​

只是想澄清一下,this功能可以在mouseleave功能中使用,这样你可以做同样或更多的事情,而你在mouseenter内做的事情

答案 1 :(得分:2)

gettersetter定义imageimageNoWidth,如下所示,

var getImage, getImageNoWidth;
$("img").hover(function(){
   $image = $(this);
   $imageNowWidth = $image.width();
    getImage = function(){
        return $image;
    };
    getImageNoWidth = function(){
        return $imageNowWidth;
    };
},function() {
    // get variable value for $image (getImage()) and $imageNowWidth (getImageNoWidth())
}

答案 2 :(得分:1)

将变量声明为外部,因此可以在两个函数中访问它。

var image;
var imageNowWidth;
$("img").hover(function(){
    image = $(this);
    imageNowWidth = $image.width();
},function() {
    // get variable value for $image and $imageNowWidth   
});​

答案 3 :(得分:1)

使用jquery'data'方法将变量直接存储在jquery对象上:

$("img").hover(function(){
    var $image = $(this);
    $image.data('imageNowWidth',$image.width());
},function() {
    var previousImageWidth = $(this).data('imageNowWidth');
    // do whatever you want to do with the width       
});​