2013-05-12 146 views
0

我真的需要一些幫助!我想要做的是找到所有以id開始的元素(即youtubeHolder)。我需要獲取每個屬性,併爲每個屬性定義一個變量,以便稍後使用它們。從多個唯一ID獲取屬性

這是如何實際完成的?

的Jquery:

$(document).ready(function() { 
    $('a#export').on('click', function() { 
     var contentMap = {}; 
     $('[id^="appendText"],[id^="youtubeHolder"]').each(function() { 
      contentMap[this.id] = $(this).html(); 
      var YouTubeSrc = $('iframe', this, '[id^="youtubeHolder"]').attr('src'); 
      var YouTubeClass = $(this, '[id^="youtubeHolder"]').attr('class'); 
      var YouTubeID = $(this, '[id^="youtubeHolder"]').attr('id'); 
      var textElement = $('iframe', this, '[id^="appendText"]').attr('src'); 
      var textContent = $(this, '[id^="appendText"]').attr('class'); 

     }); 
     for (id in contentMap) { 

      $.ajax({ 
       url: "post.php", 
       type: "post", 
       data: { 
        ExportYouTubeClass: YouTubeClass, 
        ExportYouTubeID: YouTubeID, 
        ExportYouTubeSrc: YouTubeSrc,  
        ExportTextElement: textElement, 
        ExportTextContent: textContent 
       }, 
       success: function() { 
        alert("success"); 
       }, 
       error: function() { 
        alert("failure"); 
       } 
      }); 
     } 

    }); 
}); 
+0

你爲什麼不處理數組的處理在服務器端,所以你不會試圖發送如此多的HTTPD請求,如果有100個元素,你最多隻能處理2個請求,如果每個請求只需要1秒,那就是50秒,而是簡單地數組完成後(在每個函數中),將該數組傳遞給服務器。然後在'beforeSend()'中使用'$('ele')。html('Loading ...')',然後在'success:'中執行'$(ele).html('Success !')' – Ohgodwhy 2013-05-12 02:53:21

+0

請添加您的HTML標記以便更好地理解。 – 2013-05-12 03:17:26

回答

0

我知道這是不是回答你的問題,但我會建議改變你的代碼是這樣的。

  1. 類(例如class="youtubeHolder"添加到所有元素與id="youtubeHolder_somethingsomething"

  2. 相反的$('[id^="appendText"],[id^="youtubeHolder"]').each(function(){,使用類似$('.youtubeHolder').each(function(){