最近在開發一個網站時,遇到了一個問題:使用JSON找到了要點擊的圖標,但是卻無法實現點擊功能。經過一番搜索和實驗,終于找到了解決方法。
// JSON數據 var data = { "id": "1", "name": "Apple", "img": "apple.png" } // 將JSON數據添加到HTML中 var img = $("<img>").attr({ "id": data.id, "src": data.img, "alt": data.name }).appendTo("#container"); // 點擊事件 img.on("click", function() { alert(data.name); });
在上面的代碼中,很明顯我們先使用JSON數據創建了一個標簽,并將其添加到了頁面中的某一個容器(#container)中。接著,我們為這個標簽添加了一個點擊事件,當用戶單擊這個圖片時,將會彈出一個提示框顯示該圖片的名稱(data.name)。
如果你像我一樣使用了上述代碼,你會發現點擊圖片時并沒有出現預期的提示框。這是為什么呢?原因是因為,我們在使用JSON數據創建標簽時,對于id這個屬性,jQuery并沒有將其添加到DOM中,而是直接將其存儲在標簽對象的一個屬性上了。
要解決這個問題,我們只需要把JSON數據中的id屬性添加到標簽中即可。代碼如下:
// 修改過的JSON數據 var data = { "id": "1", "name": "Apple", "img": "apple.png" } // 將JSON數據添加到HTML中 var img = $("<img>").attr({ "id": data.id, "src": data.img, "alt": data.name }).appendTo("#container"); // 將id屬性添加到DOM中 img.attr("id", data.id); // 點擊事件 img.on("click", function() { alert(data.name); });
我們在代碼中添加了一句
img.attr("id", data.id);
這條語句將id屬性添加到了DOM中,這樣就可以實現了點擊事件了。
總結一下,當我們使用JSON數據創建HTML元素時,需要注意某些屬性(如id)需要插入到DOM中才能觸發相應的事件。
上一篇ajax異步請求demo
下一篇ajax異步請求代碼jq