我从JSON文件下载数据并显示带有值的按钮:
function iterateOverPrzepisy(best) {
$('#listaPrzepisow').html('');
$.getJSON('przepisy.json', function(data) {
for (var x in przepisyDost) {
$('#listaPrzepisow').append(" <div data-role=\"collapsible\"><h2>" + przepisyDost[x].nazwa + "</h2>" +
"<ul data-role=\"listview\" data-theme=\"d\" data-divider-theme=\"d\">" +
"<li>" +
"<h3>Składniki: " + przepisyDost[x].skladniki + "</h3>" +
"<p class='ui-li-desc' style='white-space: pre-wrap; text-align: justify;'>" + przepisyDost[x].tresc + "</p>" +
"<button id='ulubioneBtn' value='" + przepisyDost[x].id + "'>Ulubione</button></li>" +
"</ul>" +
"</div>");
j++;
}
})
}
当我点击button
#ulubioneBtn
时,我想从此按钮获取价值。我将done
添加到getJSON
}).done(function(data){
$('button#ulubioneBtn').click(function (event) {
console.log("Ulubione: ");
event.preventDefault();
var id = $("button#ulubioneBtn").val();
console.log("Value: " + id);
//dodajemy do ulubionych
localStorage.setItem("ulubione"+id, id);
});
});
但它没有用。当我点击按钮Ulubione
时,我总是进入console log value = 0
答案 0 :(得分:2)
问题似乎是您添加了具有相同ID的多个按钮。 html元素的id应该是唯一的。
答案 1 :(得分:1)
przepisyDost
似乎没有在
for (var x in przepisyDost) {
?尝试
for (var x in data.przepisyDost) {
重复的id
附加到<{p}的document
"<button id='ulubioneBtn' value='" + przepisyDost[x].id
+ "'>Ulubione</button></li>" +
在for
循环中。将class
字符串附加到id
html
替换为document
"<button class='ulubioneBtn' value='" + data.przepisyDost[x].id
+ "'>Ulubione</button></li>" +
您可以使用事件委派将click
个事件附加到.ulubioneBtn
以外的.done()
元素
$("#listaPrzepisow").on("click", ".ulubioneBtn", function() {
// do stuff
})
答案 2 :(得分:0)
我创建了一个虚拟JSON并通过一次更改执行了相同的JS。 在onclick处理程序而不是获取按钮我使用$(event.target)。
它工作正常。
请找小提琴https://jsfiddle.net/85sctcn9/
$('button#ulubioneBtn').click(function (event) {
console.log("Ulubione: ");
event.preventDefault();
var id = $(event.target).val();
console.log("Value: " + id);
//dodajemy do ulubionych
localStorage.setItem("ulubione"+id, id);
});
似乎第一个对象没有任何id值。 请检查从服务器返回的JSON响应。
希望这有助于你解决问题。