2016-05-15 71 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響應。

希望這可以幫助你解決。