2012-01-07 38 views
0

我正在使用Phonegap構建一個小的(僅測試)Macrumors應用程序,並且遠程主機實際上工作(沒有相同的主機瀏覽器限制)。我正在使用jQuery Load()函數將Macrumors主頁http://www.macrumors.com/的內容加載到一個bin,hidden div中,然後每個函數循環遍歷所有文章類,以在帶有指向頁面的鏈接的框中顯示標題。jQuery每個都不適用於某些類或一般類?

問題是,Macrumors HTML內容加載後,each函數不適用於文章類。另外,在加載函數中(它允許你指定某些選擇器,包括id和類,只加載頁面的那些部分),這個類不起作用;在加載函數和每個函數中都沒有任何類。許多ID也不能在each函數中工作。

  • 有人可以解釋這個像我這樣的noob嗎?

下面是代碼:

function onDeviceReady() 
{ 
    // do your thing! 
    $('#bin').load('http://www.macrumors.com/ #content'); 
    $('.article').each(function(){ 
    var title = $('a').html(); 
    $('#content').append('<b>'+title+'</b>') 

    }); 
} 

和HTML的東西

<body onload="onBodyLoad()"> 
     <div id="bin"> 
     </div> 

     <div id="content"> 
     </div> 

    </body> 

我真誠道歉,如果這裏有一些非常簡單的錯誤,我的思念;我是主要 JS新手。

+0

請張貼您的代碼。 – JohnFx 2012-01-07 00:48:22

+0

向我們展示HTML和JavaScript。我們只能在沒有看到實際代碼的情況下進行猜測。 – jfriend00 2012-01-07 00:48:40

+0

這將有助於,如果您張貼的實際選擇器代碼 – JaredPar 2012-01-07 00:48:58

回答

2

​​是不同步的。在執行.each()時尚未完成。您需要將.each()和任何其他想要對​​的結果進行操作的代碼放在​​的成功處理程序中。

你會是這樣做的:

function onDeviceReady() 
{ 
    // do your thing! 
    $('#bin').load('http://www.macrumors.com/ #content', function() { 
     $('.article').each(function(){ 
      var title = $('a').html(); 
      $('#content').append('<b>'+title+'</b>') 
     }); 
    }); 
} 

我也猜你.each()功能無法正常工作完全正確。如果你想離開每個.article對象的鏈接,你需要你的代碼是這樣的,這樣你只找到<a>標籤中的每個.article對象,而不是整個文檔中的所有<a>標籤:

function onDeviceReady() 
{ 
    // do your thing! 
    $('#bin').load('http://www.macrumors.com/ #content', function() { 
     $('.article').each(function(){ 
      var title = $(this).find('a').html(); 
      $('#content').append('<b>'+title+'</b>') 
     }); 
    }); 
} 
+0

謝謝,這就是我需要知道的全部 – roozbubu 2012-01-07 01:10:05

+0

第一個參數中的'#content'很重要,因爲它會返回只有在解析期間來自請求的URL的'#content'中的內容。 jQuery解析返回的文檔以找到具有內容ID的元素。這個元素及其內容被插入到具有結果ID的元素中,並且其餘的被檢索的文檔被丟棄。 (通過[文檔](http://api.jquery.com/load/)) – chrisn 2012-01-07 01:21:33

+0

@ChrisN - 謝謝克里斯。這不是我對jQuery'.load()'知道的。編輯出我的答案,並把空間放回去。 – jfriend00 2012-01-07 01:26:31

相關問題