2014-05-04 53 views
0

我正在寫一個腳本來解析一個JSON文件,我似乎讓自己陷入了一個棘手的情況。我可以在一個div元素中追加一半返回的項目,另一半在另一個div元素中追加嗎?追加一些項目的div,其餘的jQuery的另一個div

這裏是原來的標記:

<div class="feed"><div class="displayfeed main"></div></div> 
<div class="feed"><div class="displayfeed second"></div></div> 

我想要的頁面來顯示這樣的附加返回的數據後:

<div class="feed"> 
    <div class="displayfeed main"> 
     <h3>item1's title</h3> //Half of the items in "div.main" 
     ....... 
    </div> 
</div> 

<div class="feed"> 
    <div class="displayfeed second"> 
    <h3>item2's title</h3> //Half of the items in "div.second" 
    ........... 
    </div> 
</div> 

JS代碼:

$.ajax({ 
    url: source, 
    success: function (data) { 
    var item_html = 
     $(data.items).each(function (index, item) { 
      '<h3>'+item.title+'</h3>'; 
     }); 
     //Any way to append some of them in ('.main') and the rest in ('.second')? 
    $('.displayfeed').append(item_html); 
    }, 
    error: function() {$searcharea.append("<b>No Results Returned</b>");}   
}); 

我我尋找任何可能的建議,否則我別無選擇,只能解析相同的提要兩次。任何幫助,將不勝感激。

更新時間: 我已經使用通過YQL轉換作爲一個例子

+0

而不是做這對於每一項的 - 你可以通過2得到的長度,分裂和迭代超過一半的項目,並添加他們無論div的需要。 .. – Chase

回答

2

使用多重選擇器JSON格式Gogole新聞源建立一個FIDDLE

$.ajax({ 
    url: source, 
    success: function (data) { 
     var item_html_main = ""; 
     var item_html_second = ""; 
     // assign values to item_html_main and item_html_second variables 
     $('.displayfeed.main').append(item_html_main); 
     $('.displayfeed.second').append(item_html_second); 
    }, 
    error: function() {$searcharea.append("<b>No Results Returned</b>");}   
}); 

我不知道你有什麼結構,但你可以試試這個:

$.ajax({ 
    url: source, 
    success: function (data) { 
     var item_html_main = ""; 
     var item_html_second = ""; 
     // assign values to item_html_main and item_html_second variables 
     var count = data.count; 
     var half = count/2; 
     var counter = 0; 
     for(item in data) { 
      if(counter < half) { 
       item_html_main += item; 
      } else { 
       item_html_secodn += item; 
      } 
      counter++; 
     } 
     $('.displayfeed.main').append(item_html_main); 
     $('.displayfeed.second').append(item_html_second); 
    }, 
    error: function() {$searcharea.append("<b>No Results Returned</b>");}   
}); 
+0

我需要爲每個選擇器使用'$(data.items).each(function(index,item)',對吧? – RedGiant

+0

@ user35295我更新了問題,但我不知道如何回答這個問題。提出了一些方法 –

+0

@ user35295再次更新 –

1

當然,不過你需要一些分離器或東西

您可以將所有關於你的第div,然後從第一個複製第二個div中想要的部分。

item_html

<h2>Headline</h2> 
<span> 
News Text 
</span> 

JS

$('.displayfeed').append(item_html); 
sec = $('.displayfeed').find('span').html(); 
$('.displayfeed').find('span').remove(); 
$('.displayfeed second').append(sec); 
2

你可以嘗試這樣的事情。如果它並不重要職位顯示在哪個容器

$.ajax({ 
    url: "<your-URL>", 
    success: function (data) { 
     var length = 0; 
     var items = data.query.results.item; 
     items = items.map(function(item){ 
      return '<h3>'+item.title+'</h3>'; 
     }); 
     var half = items.length/2; 
     for(var i = 0; i < items.length; i++) 
      if(i < half) 
       $('.main').append(items[i]); 
      else 
       $('.second').append(items[i]); 
      length++; 
     }, 

    error: function() {$searcharea.append("<b>No Results Returned</b>");}   
}); 
+0

是的,無論哪個項目顯示在哪個div中都沒有關係。我只想要一個div,剩下的就放在另一個div中。 – RedGiant

+0

比這應該適合你。如果item_html只是一個帶有創建標題的對象,則應該總是這樣做。 – Bellian

+0

我剛剛測試過你的。我得到錯誤'未捕獲的SyntaxError:意外的數字'在這一行var長度0; – RedGiant