使用Javascript+;访问自动生成表中的行;JQuery

使用Javascript+;访问自动生成表中的行;JQuery,javascript,jquery,html,Javascript,Jquery,Html,我不熟悉JQuery。我有两个表:表1是用HTML硬编码的,表2是用javascript从csv文件加载的数组生成的。显示第二个表后,我想突出显示(以及稍后的处理)用户使用JQuery单击的行。下面是简化的代码 硬编码表: <table id="table1"> <tr> <td>cell1</td><td>cell2</td><td>cell3</td> </tr> &l

我不熟悉JQuery。我有两个表:表1是用HTML硬编码的,表2是用javascript从csv文件加载的数组生成的。显示第二个表后,我想突出显示(以及稍后的处理)用户使用JQuery单击的行。下面是简化的代码

硬编码表:

<table id="table1">
    <tr> <td>cell1</td><td>cell2</td><td>cell3</td> </tr>
    <tr> <td>cell4</td><td>cell5</td><td>cell6</td> </tr>
</table>

细胞1细胞2细胞3
第4单元第5单元第6单元
从id为“data”的数组生成表(工作正常):


函数createTable(){
var-content=“”;
data.forEach(函数(行){
内容+=”;
row.forEach(函数(单元格)
{content+=“”+单元格+“”;});
内容+=”;});
document.getElementById(“table2”).innerHTML=content;}
JQuery脚本对表中的行执行任何操作,例如单击行时显示警报:

<script>
$("tr").click(function()
{
    alert("do something"); 
}); 
</script>

$(“tr”)。单击(函数()
{
警惕(“做某事”);
}); 
此代码不适用于生成的表2。仅当我尝试高亮显示整个表(使用
$(“table”)
)时,它才起作用,但当我尝试高亮显示其任何元素(tr、td)时,它就不起作用。它适用于硬编码的表1


我尝试使用不同的元素,如
$(“#table2:td”)
$(“#table2:td”)
等等,但没有效果。为什么我可以访问整个表而不能访问其元素?

动态生成的元素需要事件委派。试试下面的方法

$('body')on('click', 'tr', function() {
    alert("do something"); 
});

动态生成的元素需要事件委派。试试下面的方法

$('body')on('click', 'tr', function() {
    alert("do something"); 
});

对于动态创建的图元,您需要使用:

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

});


对于动态创建的图元,您需要使用:

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

});


单击不起作用的原因是

$("tr").click(function(){...})
此事件已在所有现有元素上注册,但尚未呈现动态行。因此,您应该使用

您可以执行以下操作:

$(document).on("click", "tr", function(){...})
但是,由于您已经拥有
ID
,您应该尝试:

$("#table2").on("click", "tr", function(){...});

单击不起作用的原因是

$("tr").click(function(){...})
此事件已在所有现有元素上注册,但尚未呈现动态行。因此,您应该使用

您可以执行以下操作:

$(document).on("click", "tr", function(){...})
但是,由于您已经拥有
ID
,您应该尝试:

$("#table2").on("click", "tr", function(){...});

使用live动态添加内容

$('#table2 tr').on( 'click', function(){
    alert("do something"); 
    console.log(this)
});

使用live动态添加内容

$('#table2 tr').on( 'click', function(){
    alert("do something"); 
    console.log(this)
});

谢谢,我没有意识到我要找的是所谓的“委派事件”。谢谢,我没有意识到我要找的是所谓的“委派事件”。工作完美,谢谢。工作完美,谢谢。From:“从jQuery 1.7开始,.live()方法已弃用。使用.on()附加事件处理程序。”啊,是@VictorAlencarSantos。感谢您的简短介绍。From:“从jQuery 1.7开始,.live()方法已被弃用。请使用.on()附加事件处理程序。”啊,是@VictorAlencarSantos。谢谢你的简短介绍。