2014-06-06 170 views
0
for (var i = 1; i <= 3; i++) 
{ 
    var tmpDiv = '#difdiv' + i; 
    var tmpButton = '#difButton' + i; 
    $(tmpDiv).css({ 
     position: "absolute", 
     left: 0, 
     top: $('#map').position().top - 16 
    }); 
    $(tmpDiv).css('z-index', 3000); 
    $(tmpDiv).css('width', '100%'); 

    $(tmpButton).hover(
     function() { 
      $(tmpDiv).fadeIn(200); 
     }, function() { 
      $(tmpDiv).fadeOut(200); 
     } 
    ); 
} 

我使用此循環將懸停差值添加到可變數量的按鈕。 當我使用此代碼時,每個jQuery-Element都會獲得「'#difdiv'+ i」。最後,每個按鈕都可以淡入淡出。在這種情況下difdiv3。 如何訪問將值賦給jQuery元素而不是變量?獲取變量的值

+1

您能否改變這個問題?這樣可以更容易地幫助 – Dalorzo

回答

2

問題是變量引用。簡單的解決方法是將循環內部的內容填入函數中並調用它。

function createButton(i) { 
    var tmpDiv = '#difdiv' + i; 
    var tmpButton = '#difButton' + i; 
    $(tmpDiv).css({ 
     position: "absolute", 
     left: 0, 
     top: $('#map').position().top - 16 
    }); 
    $(tmpDiv).css('z-index', 3000); 
    $(tmpDiv).css('width', '100%'); 

    $(tmpButton).hover(
     function() { 
      $(tmpDiv).stop().fadeIn(200); //added stop 
     }, function() { 
      $(tmpDiv).stop().fadeOut(200); //added stop 
     } 
    ); 
} 

for (var i = 1; i <= 3; i++) { 
    createButton(i); 
} 
+0

非常感謝。 – Vlorian

+1

我不確定,如果這是解決問題的最佳可能性。但它工作正常。 – Vlorian