2014-11-21 49 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