2016-05-15 40 views
0

获得价值,我从JSON文件,并显示按钮下载数据值为:的jQuery的getJSON和按钮

 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我想从这个按钮获得价值。所以,我想补充donegetJSON

}).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

+1

记录以下代码时的值是什么:'$(event.target).val()'? – mihkov

+0

按钮的值,它的工作原理。谢谢。 – lukassz

回答

1

przepisyDost不会出现在

for (var x in przepisyDost) { 

来定义?尝试

for (var x in data.przepisyDost) { 

"<button id='ulubioneBtn' value='" + przepisyDost[x].id 
+ "'>Ulubione</button></li>" + 

for循环中的重复id的附加到document。尝试附加html字符串时document

"<button class='ulubioneBtn' value='" + data.przepisyDost[x].id 
+ "'>Ulubione</button></li>" + 

你可以使用事件代表团click事件附加到.ulubioneBtn元素,外面的.done()

$("#listaPrzepisow").on("click", ".ulubioneBtn", function() { 
    // do stuff 
}) 
2

问题似乎是你添加了多个按钮与相同的ID。 html元素的id应该是唯一的。

+0

好吧,我明白了,但我该如何解决这个问题? – lukassz

+0

使用类来选择你的按钮'$('。btn-class')。click(function(event){...' – mihkov

0

我创建了一个虚拟JSON和执行针对idclass相同的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响应。

希望这可以帮助你解决。