に私はこのようなコードを持っている:到達変数は、jQueryの
<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
@ThiefMaster:確かに。 'ホバー(hover) 'ではイベントであり、どちらも使用されないので、'ホバー 'に渡された2番目のコールバックのように、完全にドロップすることができます。 –