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

我可以在hover()中传递变量吗?

如下面的脚本,我不想声明相同的变量两次var target = xxx ,我不想让这个变量成为全局target = xxx bcos我还有其他函数使用这个变量名 – target。

  $('.image-profile').hover(function () { var target = $('.button-change-image-profile',this); target.show(); },function () { //var target = $('.button-change-image-profile',this); target.hide(); }); 

所以我试着像这样传递var },function (target) { ,当然这是错误的,但是传递这个var的任何其他方法呢?

谢谢。

简短的版本只是在这里切换:

 $('.image-profile').hover(function () { $('.button-change-image-profile',this).toggle(); }); 

要让它在每个处理程序中可用(作为更通用的解决方案),在循环时将其定义为外部.each()例如使用.each() ),如下所示:

 $('.image-profile').each(function() { var target = $('.button-change-image-profile',this); $(this).hover(function () { target.show(); },function () { target.hide(); }); }); 

另一种可能的方法是:使用jQuery .data()将数据保存到hover输入/输出中。 您将它保存在鼠标中,在鼠标输出时检索它。 这可能在概念上类似于使用全局变量或变换hover函数,因此,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(); }); 

希望这种方法不是太错了……

我认为jQuery bind可能就是你想要的。

只需定义hoverfunction的var即可。