2011-10-03 117 views
0
<section id="wheel_section"> 
<nav class="position"> 
    <a href="#" class="pos-1">LOC 1</a> 
</nav> 
<nav class="position"> 
    <a href="#" class="pos-2">LOC 2</a> 
</nav> 
<nav class="position"> 
    <a href="#" class="pos-3">LOC 3</a> 
</nav> 
<nav class="position"> 
    <a href="#" class="pos-4">LOC 4</a> 
</nav> 
<nav class="position"> 
    <a href="#" class="pos-5">LOC 5</a> 
</nav> 
</section> 
<section id="wheel_wheel"> 
<p> 
    <img id="the_wheel" src="position_1.gif" width="233" height="233" align="absmiddle" /> 
</p> 
</section> 

試圖更改懸停時的圖像(pos-1,pos-2等等)需要更改「the_wheel」中的圖像。這些都是gif,而且id越高,gif的旋轉速度越快。如果我將鼠標移動到左側,那麼ID就會變小,GIF的旋轉速度會變慢,這就是它們的製作方式。將鼠標懸停在ID上更改圖像

嘗試這樣:

$(document).ready(function(){ 
$("#wheel_section .position .pos-1").hover(function() { 
    $('img#the_wheel').attr("src", "position_1.gif"); 
}); 

$("#wheel_section .position .pos-2").hover(function() { 
    $('img#the_wheel').attr("src", "position_2.gif"); 
}); 

$("#wheel_section .position .pos-3").hover(function() { 
    $('img#the_wheel').attr("src", "position_3.gif"); 
}); 

$("#wheel_section .position .pos-4").hover(function() { 
    $('img#the_wheel').attr("src", "position_4.gif"); 
}); 

$("#wheel_section .position .pos-5").hover(function() { 
    $('img#the_wheel').attr("src", "position_5.gif"); 
}); 
}); 

,但我想有一個更好的aproach也..還是我錯了? :)

+1

[會這樣滿足](http://jsfiddle.net/Shef/RCyV6/)? – Shef

+0

謝謝。我複製相同的代碼在我的本地主機上,懸停將獲得position_undefined.gif –

+0

你也必須改變標記,這就是爲什麼。 :) – Shef

回答

3

有兩件事情:

  • 預緊您的圖像
  • DRY(不要重複自己)
  • 使用jQuery集合的力量

var wheels = [], 
    wheelcount = 5; 

// Preload the images 
for(var i = 1; i <= wheelcount; i++) 
    wheels.push($('<img/>').attr('src', 'position_' + i +'.gif')); 

// Wire up the mouseenter event on each element 
$("#wheel_section>nav>a").mouseenter(function() { 
    var c = $(this).attr('class'); 
    var i = parseInt(c.substring(c.indexOf('-')+1)) - 1; 
    $('img#the_wheel').attr('src', wheels[i].attr('src')); 
}); 
+0

謝謝,幾乎不錯,只有我懸停在第一個鏈接上,它給了我第二個GIF和最後沒有:) –

+0

也讓我們說,如果我將鼠標懸停在第4個鏈接上,將加載圖像,如果我移動將鼠標懸停在另一個鏈接上,同樣加載的圖片將保留 –

+0

對不起,錯過了數組索引的錯誤。得到了修復。 – joshperry

1

你或許應該先緩存圖像,然後進行修改:

$(document).ready(function(){ 
    // preload and cache images 
    var $pos1 = $('<img/>').attr('src', 'position_1.gif').attr('id', 'the_wheel'); 
    var $pos2 ... 
    ... 
    var $pos5 ... 

    $("#wheel_section .position .pos-1").hover(function() { 
     $('img#the_wheel').replaceWith($pos1); 
    }); 
    ... 
} 
+0

謝謝。由於某種原因,圖像沒有顯示在懸停... –

+0

嗯,你能提供一個測試鏈接或jsfiddle - 可能有其他事情正在進行。 – swatkins

+0

你的建議很有用,謝謝。一個:) –

相關問題