2013-05-15 78 views
5

我正在尋找把div放在我的網站上,其內容根據什麼鏈接clicked更改而不刷新。要放在那裏的內容來自MySQL database並且放入JSON中。 我的問題是,我無法獲得點擊鏈接時顯示的JSON數據。用jquery創建動態div內容

下面是我使用的腳本:

$(document).ready(function() { 
    $.getJSON("jsondata.php",rightSideData); 
    function rightSideData(data) { 
     for(var i=0; i<data.length;i++) { 
     $("#changetext"+data[i].id).click(function() { 
      $("#rightside").html("<h1>" + data[i].title + "</h1><p />" + data[i].content); 
     }); 
     } 
    } 
}); 

這是有可能改變div元素:

<div class='rightside' id='rightside'>Test</div> 

的鏈接構造是這樣的:

echo "<a id='changetext" . $row['id'] . "'> "; 
echo "<div class='tile'>"; 
echo "<h2>Tile</h2></div></a>"; 

我測試了不同的元素並且它們工作正常(改變divs續帶硬編碼數據,顯示JSON數據),但我很難弄清楚爲什麼組合的東西無法正常工作。

回答

3

對象一點兒也不具有一定長度,使用$.each迭代它,而不是,除非它實際上是一個包含數組對象:

$(document).ready(function() { 
    $.getJSON("jsondata.php",rightSideData); 

    function rightSideData(data) { 
     $.each(data, function(i, d) { 
     $("#changetext" + d.id).on('click', function() { 
      var h1 = $('<h1 />', {text : d.title}), 
       p = $('<p />', {text : d.content}); 
      $("#rightside").html(h1.add(p)); 
     }); 
     }); 
    } 
}); 
+0

雖然更新的代碼更清晰,但它顯示的標題。隨着我這麼新,我似乎無法找到錯誤... –

+0

@Freezzo - 這是我的壞,大多數jQuery方法可以添加多個元素,如'.append(elem1,elem2,elem3)',但'html()'只接受一個看起來像的元素,所以我們必須將這兩個元素加在一起來創建一個元素,編輯答案。 – adeneo

2

問題是,i var將在循環結束時爲data.length,這就是點擊處理程序將看到的內容。