Javascript 使用JSON和下划线.js链接到内容
我有一个名为JSON的文件,其中有许多关于书籍的不同属性(author、desc、title等)。我使用JSON将内容加载到一个div中,只显示标题。我的问题是,我试图使每个标题成为一个链接,并在同一页上的一个单独的div中显示该特定书籍的其余内容。以下是我到目前为止的情况。每当我尝试在单击函数之后引用任何内容时,我的响应都是“未定义”Javascript 使用JSON和下划线.js链接到内容,javascript,jquery,html,json,underscore.js,Javascript,Jquery,Html,Json,Underscore.js,我有一个名为JSON的文件,其中有许多关于书籍的不同属性(author、desc、title等)。我使用JSON将内容加载到一个div中,只显示标题。我的问题是,我试图使每个标题成为一个链接,并在同一页上的一个单独的div中显示该特定书籍的其余内容。以下是我到目前为止的情况。每当我尝试在单击函数之后引用任何内容时,我的响应都是“未定义” $.getJSON(“data/data.json”),函数(data){ var res=uu.sortBy(data.books,函数(item){retu
$.getJSON(“data/data.json”),函数(data){
var res=uu.sortBy(data.books,函数(item){return item.name});
_.每项职能(项目){
$(“#books”).append(“”+item.name+”
”);
});
$(“.book”)。单击(函数(){
var clickedItem=$(此值);
$(“#详细信息”)。附加(“”+clickedItem.author+””;
您可以将每本书的详细信息存储在节点的数据中。这样您就可以随时访问它
$.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>");
});
});
$.getJSON(“data/data.json”),函数(data){
var res=uu.sortBy(data.books,函数(item){return item.name});
_.每项职能(项目){
var book=$(“”+item.name+“
”).data('details',item);
$(“#书”)。追加(书);
});
$(“#books”)。在('click','.book',函数()上{
var clickedItem=$(此),
详细信息=单击编辑项数据(“详细信息”);
$(“#details”).html(“”+details.author+””);
});
});
您需要向我们展示您在单击
处理程序中尝试的内容。单击
事件绑定是否发生在$回调之外?getJSON
回调?@Mathletics它发生在回调内部。这是您的问题,clickedItem
是一个jquery对象。它与<循环中的代码>项
。您需要以其他方式存储该数据。感谢您的帮助。控制台中的var书籍“Uncaught SyntaxError:意外标识符”中的行出现错误@user2980869这很奇怪。你的代码是否在某个我们可以看到它运行的地方?不,我不知道放在哪里,因为JSON文件。有什么建议吗?你可以尝试使用JFIDLE创建文件,你的代码正在运行。非常感谢!我也会记住这个网站。
$.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>");
});
});