2014-06-06 129 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