我有jQuery下面但我不能将变量传递给第二个函数
$("img").hover(function(){
var $image = $(this);
var $imageNowWidth = $image.width();
},function() {
// get variable value for $image and $imageNowWidth
});
在jsFiddle上测试它不起作用时,我该怎么做才能将变量传递给第二个函数?
答案 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)
为getter
和setter
定义image
和imageNoWidth
,如下所示,
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
});