所以我正在做一些非常基本的事情可以用CSS來完成,但我想用jQuery來做到這一點,以熟悉圖書館。jQuery的預裝imgages與翻轉
我想創建一個翻轉圖像庫。當你將鼠標放在圖像上時,它將與一個稍微修改過的版本交換。
下面是代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>jQuery</title>
<script src="jquery-1.9.1.js"></script>
<style>
</style>
</head>
<body>
<div id="gallery">
<a href="#"><img src="images/one_s.jpg" /></a>
<a href="#"><img src="images/two_s.jpg" /></a>
<a href="#"><img src="images/three_s.jpg" /></a>
<a href="#"><img src="images/four_s.jpg" /></a>
<a href="#"><img src="images/five_s.jpg" /></a>
<a href="#"><img src="images/six_s.jpg" /></a>
</div>
<script>
$(document).ready(function(){
var alternate = ['images/one_s_edited.jpg',
'images/two_s_edited.jpg',
'images/three_s_edited.jpg',
'images/four_s_edited.jpg',
'images/five_s_edited.jpg',
'images/six_s_edited.jpg'];
var $selection = $("#gallery img");
for(var i = 0; i < alternate.length; i++)
{
var imgObject = new Image();
var downloadedImg = imgObject.src = alternate[i];
console.log(downloadedImg);
var originalSrc = $selection.eq(i).attr("src");
console.log(originalSrc + "\n");
$selection.eq(i).hover(
function(){
$(this).attr("src", downloadedImg);
},
function(){
$(this).attr("src", originalSrc);
}
);//End hover
}//End loop
});//End ready
</script>
</body>
</html>
這裏是一個鏈接到最終的結果是:link
正如你可以看到按計劃它翻轉,但沒有。它以最後的翻轉圖像結束,不會變回原始圖像,也不會顯示與其對應的適當翻轉圖像。
任何簡單的建議,不使用正則表達式?
你的答案就在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures#Creating_closures_in_loops.3A_A_common_mistake –
經典每個閉包共享相同變量的問題。大約一百萬個堆棧溢出重複。您需要爲每個迭代提供downloadImg和originalSrc的唯一副本。 – meagar
感謝您的文章@ArunPJohny不,我明白這個問題100% –