jquery:在hover()函数中传递变量?

时间:2010-11-26 17:15:47

标签: jquery variables hover global-variables scope

我可以在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的其他方法呢?

感谢。

4 个答案:

答案 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。