2017-10-09 47 views
-2

我想循環通過this JSON數據並將數據輸出到像這樣的手風琴: http://alexthorpe.com/wp-content/uploads/2012/01/accordion_with_css.jpg但它不起作用。嘗試通過JSON對象循環並使用HTML輸出它

這是我到目前爲止有:
HTML:

<div class="accordion"> 
      <div class="slide"> 
       <h3></h3> 
       <div class="accordion-info"> 
       </div> 
      </div> 
</div> 

JS:

$(document).ready(function() { 
    $('div.accordion-info').hide(); 
    $('.slide > h3').click(function() { 
     $(this).next().slideToggle('fast'); 
     $(this).toggleClass('active'); 
    }); 
}); 

$(document).ready(function() { 
    $.getJSON('http://design.propcom.co.uk/buildtest/accordion-data.json', function(data) { 
     $.each(data, function(index) { 
      console.log(data); 
     }); 
    }); 

}); 

這是codepen

+0

那麼,什麼是你的問題? – Optional

+0

@可選我試圖通過這個[JSON](http://design.propcom.co.uk/buildtest/accordion-data.json)對象循環對象 –

+0

你需要通過再次遍歷'塊'這是一個數組作爲你的迴應的一部分..由於每個塊都有內容和標題屬性,你可以附加到你的div。簡單:) – Kamal

回答

0

因爲我想避免從不同的服務器調用數據,這裏複製的數據,這是怎麼循環

var jsonData = 
 
{ 
 
\t "blocks": [ 
 
\t \t { 
 
\t \t \t "heading": "Section 1", 
 
\t \t \t "content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis!" 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "heading": "Section 2", 
 
\t \t \t "content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque!" 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "heading": "Section 3", 
 
\t \t \t "content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit." 
 
\t \t } 
 
\t ] 
 
}; 
 
var json = jsonData.blocks; 
 
    for (var key in json) { 
 
     if (json.hasOwnProperty(key)) { 
 
      console.log(json[key].heading); 
 
      console.log(json[key].content); 
 
     } 
 
    } 
 
    
 

+0

謝謝有沒有辦法使用url而不是複製和粘貼json數據? –

+0

你可以像使用url一樣使用url,但不能使用jsfiddle或codepen,因爲你使用的是cors /不同的協議。如果url是從同一臺服務器返回的,那麼您可以使用它。 – Optional

+0

否。您的代碼正確地獲取json數據。看到這裏的Cors啓用url的工作示例http://jsfiddle.net/esmufhzb/ – Optional

1

HTML代碼

在這裏,我將使用模板格式,將更容易添加或刪除子元素

<!-- Display Accordion --> 
<div> 
    <h1>Jquery Accordion</h1> 
    <div class="accordion"></div> 
</div> 
<!-- Template for each slide item --> 
<div rel="template"> 
    <div class="block"> 
     <h3 class="heading"></h3> 
     <div class="content"></div> 
    </div> 
</div> 

腳本

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
$(function() { 
    $.getJSON('http://design.propcom.co.uk/buildtest/accordion-data.json', function(data) { 
     // To empty the existing item 
     // $('.accordion').empty(); 

     // Iterate block 
     $.each(data.blocks, function(k, v) { 
      // Make use of jquery clone 
      var new_block = $('[rel=template]').find('.block').clone(); 
      new_block.find(".heading").html(v['heading']); 
      new_block.find(".content").html(v['content']); 

      // Append the each item 
      $('.accordion').append(new_block) 
     }); 
    }); 

}); 
+0

你的解決方案似乎並不工作 –

+0

@JafarOcean在jsfiddle中的相同代碼https://jsfiddle.net/sivarajs/n820mh6j/1/它不是因爲我們嘗試通過https訪問http –