【发布时间】:2010-11-30 22:19:35
【问题描述】:
我有这样的代码:
<script type="text/javascript">
var currentPicture;//default picture
var picEL;//the image viewer element
jQuery("#backImageShower").hover(
function(i)
{
picEL = jQuery("#dynloadarxdock > img");
currentPicture = picEL.attr("src");
picEl.attr("src","back.jpg");
},
function()
{
picEl.attr("src",currentPicture);
}
);
</script>
但是当我运行这段代码时,它说picEl 没有定义。我认为这可能是因为闭包,但这段代码运行完美:
<script type="text/javascript">
var currentPicture;//default picture
jQuery("#backImageShower").hover(
function(i)
{
currentPicture = jQuery("#dynloadarxdock > img").attr("src");
jQuery("#dynloadarxdock > img").attr("src","back.jpg");
},
function()
{
jQuery("#dynloadarxdock > img").attr("src",currentPicture);
}
);
</script>
但这段代码也包含全局变量并且可以工作。
谁能告诉我为什么?
谢谢。
【问题讨论】:
-
建议:不要将
i用于非循环变量。事件处理程序的第一个参数通常是一个事件,所以最好叫它e -
@ThiefMaster:确实。在
hover中,它是一个事件,也没有使用,因此可以完全删除它,就像第二个回调传递给hover一样。
标签: javascript jquery closures hover