使用Javascript+;访问自动生成表中的行;JQuery
我不熟悉JQuery。我有两个表:表1是用HTML硬编码的,表2是用javascript从csv文件加载的数组生成的。显示第二个表后,我想突出显示(以及稍后的处理)用户使用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
<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。谢谢你的简短介绍。