我可以在hover()中传递一个变量吗?
在下面的脚本中,我不想两次声明相同的变量var target = xxx
,我不想让这个变量成为全局target = xxx
bcos我还有其他函数使用这个变量名字 - 目标。
$('.image-profile').hover(function () {
var target = $('.button-change-image-profile',this);
target.show();
},function () {
//var target = $('.button-change-image-profile',this);
target.hide();
});
所以我试着像这样},function (target) {
传递var,当然这是错的,但是传递这个var的其他方法呢?
感谢。
答案 0 :(得分:7)
另一种可能的方法:使用jQuery this
将数据保存到悬停进/出的.data()
。您将它保存在鼠标中,在鼠标输出时检索它。
这可能在概念上类似于使用全局变量或变换的悬停函数,因此,t可能会产生一些垃圾......
$('.image-profile').hover(function () {
var target = $('.button-change-image-profile',this);
target.show();
// we save the target object into the 'target' key.
$(this).data('target',target);
},function () {
// we retrieve the target object (a jQuery object) and then hide it.
$(this).data('target').hide();
});
希望这种方法不是太错了......
答案 1 :(得分:6)
短版本只是在这里切换:
$('.image-profile').hover(function () {
$('.button-change-image-profile',this).toggle();
});
让它在每个处理程序中可用(作为更通用的解决方案)在循环时将其定义为外部(例如,使用.each()
),如下所示:
$('.image-profile').each(function() {
var target = $('.button-change-image-profile',this);
$(this).hover(function () {
target.show();
},function () {
target.hide();
});
});
答案 2 :(得分:2)
我认为jQuery bind可能就是你想要的。
答案 3 :(得分:1)
只需定义悬停功能的var。