2009-10-11 43 views
0

我有一些div元素像這樣的網頁:AJAX - 加載所有div元素

<div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA'> 
</div> 

我想每個div元素調用javascript函數,當它加載,填補div。理想情況下,我會喜歡做

<div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA' 
    onload=getcontent('ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA');> 
</div> 

但當然,onloads不允許div元素。有沒有辦法做到這一點?我已經閱讀了許多jQuery可以爲此提供幫助的地方,但我無法弄清楚如何編寫代碼。任何幫助將非常感謝!

+0

如果他們需要在這些內容的權利,當他們加載,爲什麼不從服務器獲取呢? – 2009-10-11 02:16:10

回答

0

要做到這一點沒有jQuery,你只需要設置窗口的onload,並告訴它如何處理每個div。但jquery使這更簡單。

因此,沒有:

window.document.onload = function() { 
     var divs = document.getElementsByTagName("div"); 
      for(var i = 0; i < divs.length; i++) 
       divs[i].text("blah blah blah"); 
      } 
    }; 

這可能是innerHTML之中。我必須仔細檢查。但這是主旨。使用jquery:

$(function(){ 
      $("div").text("blah blah blah"); 
    }; 

這當然假設每個div都獲得相同的文本。如果你想要它基於ID或類,你肯定想要jQuery。

PS - 大多數網頁嘗試避免將javascript事件處理程序放置在實際的HTML中。如果您在加載時設置事件處理程序,則不需要並且代碼更清晰。 jquery 絕對有助於此。

0

如果你立足的div ID的內容,略作修改,以安東尼的代碼應工作

document.onload = function() { 
      var divs = document.getElementsByTagName("div"); 
      for(var i = 0; i<divs.length;i++){ 
       divs[i].innerHTML = getContent(divs[i].id); 
      } 
0

我將一個類分配給您想要的div的爲「自動加載」自己內容。這使得標記更清晰,JavaScript更簡潔。

$(function() { 
    $('.autoload').each(function() { 
     // Use AJAX 
     $.get("service.php", {id: this.id} function(response) { 
      // Handle server response here 
     }); 

     // Or a local data island 
     this.innerHTML = getDataById(this.id); 
    }); 
}); 
0

使用jQuery:

您應該考慮使用$ .load()來檢索HTML內容。它比$ .get()更容易使用。雖然它會使用POST語義,如果你提供參數...

在任何情況下,你真的想分開回電話服務器每個股利? ..也許你應該考慮一個單一的電話,發送累積的div id等待內容到您的網絡服務功能,然後隨後返回一個json結構,您可以通過成功完成填充divs在一個鏡頭。

喜歡的東西(未測試!):

$(function() { 
    var ids = []; 
    $('div.autoload').each() { function() { ids.push($(this).attr('id')); }); 
    $.get('service.php', {ids: ids}, function (response) { 
     $.each(response.perdiv, function (i, c) { 
      $('div#' + c.id).html(c.html); 
     }); 
    }); 
});