如何将click事件绑定到动态创建的TD?

时间:2013-11-21 07:55:05

标签: javascript jquery

我有一个函数,它接受一些json数据并将其放入表中。我正在尝试将click事件绑定到某些表元素。在这种情况下,表格有两列“饮品名称”和“饮品类型”。我希望这两列有不同的事件,所以我试图给它们类标签,这样我就可以将事件绑定到给定的类。

包裹在**中的行是我正在尝试做的伪代码。我已经尝试过看一堆东西而不能完全解决这个问题...谢谢!!

function totable(data){
                var d = document.getElementById("drinkList");
                d.setAttribute("class","panel panel-default");
                var dd = document.createElement("div");
                dd.setAttribute("class","panel-heading");
                dd.appendChild(document.createTextNode("Drink list"));
                d.appendChild(dd);
                var mytable = document.createElement("table");
                mytable.setAttribute("class","table");
                var thr = document.createElement("tr");
                for(var key in data[0]){
                    var th = document.createElement("th");
                    th.appendChild(document.createTextNode(key));
                    thr.appendChild(th);
                }
                mytable.appendChild(thr);
                for(var i=0;i<data.length;i++){
                    var r = document.createElement("tr");
                    for(var key in data[i]){
                        var td = document.createElement("td");
                        **td.setClassName("drinkEntry");**
                        td.appendChild(document.createTextNode(data[i][key]));
                        r.appendChild(td);
                    }
                    mytable.appendChild(r);
                }
                d.appendChild(mytable);
                **$("#drinkEntry").on("click", viewDrink);**
            }

5 个答案:

答案 0 :(得分:1)

您可以使用方法.on()document将事件直接绑定到类(非id ),因为实例已不存在 试试这个:

$(document).on("click",".drinkEntry", function(){

});

答案 1 :(得分:1)

**td.setClassName("drinkEntry");**替换为$(td).click(viewDrink);

答案 2 :(得分:0)

试试这个

$('body').on('click','#drinkEntry',function(){

//Your Codes

});

答案 3 :(得分:0)

要将事件绑定到动态创建的项目,必须使用.on() jQuery函数。

在你的情况下它应该是:

$('#drinkEntry').on("click", function () {
    //logic
});

答案 4 :(得分:0)

试试

$('body').on('click', 'td.drinkEntry', function() {
    alert("td clicked");
});

JsFiddler Demo

您还可以阅读完整的文章:Bind events to dynamically created elements using jQuery