我想通過模擬時鐘作出選擇時間。我現在的問題是,當我將鼠標懸停在小時分區上時。它應該在懸停時顯示其他內容(現在文本爲「懸停」),並在離開時返回小時文本(例如「10」)。問題是,離開時,所有的小時div被設置爲文本「12」(腳本所做的最後一個div)。jQuery離開懸停不顯示正確的內容
我不明白爲什麼它不按預期工作。也許你會呢?
下面是腳本:
'use strict'
var d = 12; // number of hours
var cx = 200;
var cy = 200;
var r = 40;
var a = 2*Math.PI/d; // angle of one hour in radians
var s = a*2; // Displace starting of the circle to fit a clock
for(var i=0; i<d; i++) {
var x = Math.round(cx + r*Math.cos(a*i-s));
var y = Math.round(cy + r*Math.sin(a*i-s));
var ii = i+1;
var space = (ii<10 ? " ":"");
$('.circle').append('<div class="slices" id="slice'+ii+'">'+space+ii+'</div>');
$('#slice'+ii).css({left:x,top:y}).hover(
function() {
$(this).html("Hovering");
},
function() {
$(this).html(space+ii);
}
);
}
要看到它的行動,看到http://plnkr.co/edit/ORuRyr?p=preview
這是因爲在循環您正在更新你的'ii'和循環後爲12。所以,當你懸停後更換您的HTML,你的'ii'是12並把它放進你的div中。當鼠標懸停在div上時,你需要「記住」HTML的內容,並在懸停時將其放回原處。 – putvande