2014-11-21 48 views
0

我有一個JSON文件標題與許多不同的書籍(作者,desc,標題等)屬性。我正在使用JSON將內容加載到div並只顯示標題。我的問題是我試圖讓每個標題都成爲一個鏈接,並在同一頁面的另一個div中顯示該特定書籍的其餘內容。以下是我到目前爲止。每當我嘗試引用點擊後什麼作用我的回答是「未定義」使用JSON和underscore.js鏈接到內容

$.getJSON("data/data.json", function(data){ 
    var res = _.sortBy(data.books, function(item) { return item.name }); 
    _.each(res, function(item){ 
     $("#books").append("<p class='book'>"+item.name+"</p>"); 
    }); 
$(".book").click(function() { 
var clickedItem = $(this); 
$("#details").append("<p>"+clickedItem.author+"</p>"); 
+0

可能重複[事件綁定的動態創建的元素嗎?](http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-元素) – Mathletics 2014-11-21 00:55:17

+1

您需要向我們展示您在'click'處理程序中嘗試的內容。 – 2014-11-21 00:55:20

+0

'click'事件綁定是否發生在'$ .getJSON'回調之外? – Mathletics 2014-11-21 00:57:46

回答

0

你可以每本書的細節存儲在節點的data。這樣,您就可以隨時隨地訪問它..

$.getJSON("data/data.json", function(data){ 
    var res = _.sortBy(data.books, function(item) { return item.name }); 
    _.each(res, function(item){ 
     var book = $("<p class='book'>"+item.name+"</p>").data('details', item); 
     $("#books").append(book); 
    }); 

    $("#books").on('click', '.book', function() { 
     var clickedItem = $(this), 
      details = clickedItem.data('details'); 

     $("#details").html("<p>"+details.author+"</p>"); 
    }); 
}); 
+0

感謝您的幫助。這是給我和控制檯的錯誤與var書「Uncaught SyntaxError:意外的標識符」 – user2980869 2014-11-21 01:37:02

+0

@ user2980869這是奇怪的行。你有你的代碼生活的地方,我們可以看到它在行動? – 2014-11-21 01:41:31

+0

不,我不知道該把它放在哪裏,因爲JSON文件。任何建議? – user2980869 2014-11-21 01:52:39