2012-11-20 80 views
0

我有一個網頁,顯示按名稱(dataFeed變量在下面)的數據饋送列表,我試圖模擬pop-當用戶單擊數據饋送名稱旁邊的圖標(dataFeed +'dataLink')時,該窗口包含有關數據饋送的更多信息。我有一個隱藏的div(diagWindow),它包含一個div(diagWindowContent),其中填充了關於該Feed的此信息。 getDiagData.php頁面使用傳遞給它的dataFeed參數返回我想要顯示的信息。如何使jQuery load()適用於數組的所有元素,而不僅僅是最後一個

起初我想這...

for (i = 0; i < dataFeeds.length; i++) { 
    dataFeed= dataFeeds[i]; 

    $('#' + dataFeed+ 'diagLink').click(function() { 
     $('#diagWindow').toggle(); 
     $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed); 
    }); 
} 

但只顯示在頁面的數據傳送專線數組中返回的最後數據傳送專線。

然後我試圖使用上的切換(),這樣AA回調方法...

for (i = 0; i < dataFeeds.length; i++) { 
    dataFeed= dataFeeds[i]; 

    $('#' + dataFeed+ 'diagLink').click(function() { 
     $('#diagWindow').toggle('fast', function(dataFeed) { 
      return function() { 
       $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed); 
      }(dataFeed) 
     );    
    }); 
} 

但似乎有相同的結果,顯示信息爲數據傳送專線數組中的最後數據饋送。

我正在尋求幫助,瞭解如何在單擊數據饋送名稱旁邊的圖標時從getDiagData.php頁面加載相應的數據饋送信息。

謝謝。

+0

什麼是你的HTML和數據傳送專線陣是什麼樣子? –

回答

3

試試這個..你沒有執行它在正確的上下文..

for (i = 0; i < dataFeeds.length; i++) { 
    (function(num){ 
     var dataFeed = num; 

     $('#' + dataFeed + 'diagLink').click(function() { 
      $('#diagWindow').toggle(); 
      $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed); 
     }); 
    })(dataFeeds[i]) 
}​ 
+0

非常好!這樣做的竅門...除了我需要添加大括號來包含你添加的'function(num)'函數內的代碼。非常感謝! – Kabb5

+0

@ Kabb5 ..很高興幫助:) ..雖然錯過了大括號;) –

0

這很可能是一個變量範圍的問題,你可以嘗試這樣的事:

for (var i = 0; i < dataFeeds.length; i++) { 
    var dataFeed= dataFeeds[i]; 

    $('#' + dataFeed+ 'diagLink').click(function() { 
     $('#diagWindow').toggle(); 
     $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed); 
    }); 
} 

注意添加var關鍵字

編輯:其實,舒尚特的回答是比較正確的。我相信JavaScript中的變量是由函數作用域的,所以我上面的代碼可能無法正常工作。他的意志。

+0

是的,Sushanth的答案爲我工作......感謝給它一個鏡頭雖然:) – Kabb5

+0

你說得對,我忘了JavaScript中的變量是函數作用域。 – rossipedia

相關問題