jquery访问动态内容的元素

jquery访问动态内容的元素,jquery,Jquery,我对jQuery非常陌生,在访问动态内容的元素时遇到困难。正如您在下面看到的,我已经创建了一个包含在div中的基本表,它在您运行代码时已经存在。单击任何单元格时,将显示该单元格的文本。但是,如果我在页面加载(单击按钮)后创建表格,然后单击单元格,则无法得到相同的结果 <script> $(document).ready(function() { $("#div1 td").click(function() { alert($(this)

我对jQuery非常陌生,在访问动态内容的元素时遇到困难。正如您在下面看到的,我已经创建了一个包含在
div
中的基本表,它在您运行代码时已经存在。单击任何单元格时,将显示该单元格的文本。但是,如果我在页面加载(单击按钮)后创建表格,然后单击单元格,则无法得到相同的结果

<script>
    $(document).ready(function() {
        $("#div1 td").click(function() {
            alert($(this).text());
        })

        $("#div2 td").click(function() {
            alert($(this).text());
        })

        $("#createtable").click(function () {
            $("#div2").html("<table id=\"table2\" border=\"1\"><tr><th>Table</th><th>2</th></tr><tr><td>January</td><td>$100</td></tr></table>");           
        })

    });
</script>

<div id="div1">
    <table id="table1" border="1">
      <tr>
        <th>Table</th>
        <th>1</th>
      </tr>
      <tr>
        <td>January</td>
        <td>$100</td>
      </tr>
      <tr>
        <td>February</td>
        <td>$80</td>
      </tr>
    </table>
</div>

<br>
<button id="createtable">Generate Table</button>
<div id="div2">DYNAMIC CONTENT</div>

$(文档).ready(函数(){
$(“#div1 td”)。单击(函数(){
警报($(this.text());
})
$(“#div2 td”)。单击(函数(){
警报($(this.text());
})
$(“#createtable”)。单击(函数(){
$(“#div2”).html(“表2一月$100”);
})
});
桌子
1.
一月
$100
二月
$80

生成表 动态内容

.

事件处理程序在文档加载时注册。您应该在替换上下文后重新注册它们,以便更好地将代码放在单独的函数中,并在替换受影响元素的每个位置调用它

function regHandlers()
{
        $("#div1 td").click(function() {
            alert($(this).text());
        })

        $("#div2 td").click(function() {
            alert($(this).text());
        })
}

$(document).ready(function() {

        regHandlers();

        $("#createtable").click(function () {
            $("#div2").html("<table id=\"table2\" border=\"1\"><tr><th>Table</th><th>2</th></tr><tr><td>January</td><td>$100</td></tr></table>");  

        regHandlers();
        })
});
函数regHandlers()
{
$(“#div1 td”)。单击(函数(){
警报($(this.text());
})
$(“#div2 td”)。单击(函数(){
警报($(this.text());
})
}
$(文档).ready(函数(){
regHandlers();
$(“#createtable”)。单击(函数(){
$(“#div2”).html(“表2一月$100”);
regHandlers();
})
});

您需要为动态添加到DOM中的元素应用事件委派:

$(document).on("click","#div2 td", function() {
    alert($(this).text());
});
可能重复的