jQuery创建元素时自动递增ID
我有一个表,我正在为用户单击按钮时创建tr和td。这是非常好的工作,除了我需要能够添加id的那些tr的,并让他们自动递增 我的完整代码如下所示jQuery创建元素时自动递增ID,jquery,Jquery,我有一个表,我正在为用户单击按钮时创建tr和td。这是非常好的工作,除了我需要能够添加id的那些tr的,并让他们自动递增 我的完整代码如下所示 $("#moreRows").click(function () { var rowCount = $('table tr').length -1; if(rowCount >= 100) { alert('you have 100 rows'); }else{ $("#c
$("#moreRows").click(function () {
var rowCount = $('table tr').length -1;
if(rowCount >= 100)
{
alert('you have 100 rows');
}else{
$("#correctionTable").each(function () {
var tds = '<tr>';
jQuery.each($('tr:last td', this), function () {
tds += '<td>' + $(this).html() + '</td>';
});
tds += '</tr>';
if ($('tbody', this).length > 0) {
$('tbody', this).append(tds);
$('tbody', this).append(tds);
$('tbody', this).append(tds);
$('tbody', this).append(tds);
$('tbody', this).append(tds);
} else {
$(this).append(tds);
}
});
}
return false;
});
$(“#更多行”)。单击(函数(){
var rowCount=$('table tr')。长度为-1;
如果(行数>=100)
{
警报(“您有100行”);
}否则{
$(“#校正表”)。每个(函数(){
var tds=“”;
每个($('tr:last td',this),函数(){
tds+=''+$(this.html()++'';
});
tds+='';
如果($('tbody',this).length>0){
$('tbody',this).append(tds);
$('tbody',this).append(tds);
$('tbody',this).append(tds);
$('tbody',this).append(tds);
$('tbody',this).append(tds);
}否则{
$(此).append(tds);
}
});
}
返回false;
});
到目前为止,我已经尝试过类似的方法(不是完成我知道的每个函数,只是一个示例)
var num=5;
$(“#校正表”)。每个(函数(){
var id=num++;
var tds=“”;
尝试在each循环中将id添加到原始tr中。这只是将id 6添加到每个tr中
我也试过这个
var num = 5;
$("#correctionTable").each(function () {
tds = '<tr id="' + (++num) + '">';
var num=5;
$(“#校正表”)。每个(函数(){
tds=“”;
还有这个
var num = 5;
$("#correctionTable").each(function () {
++num
tds = '<tr id="' + num + '">';
var num=5;
$(“#校正表”)。每个(函数(){
++num
tds=“”;
但两者都不起作用
我还尝试在.each函数中移动该函数,将td附加到最后一个tr,但它不喜欢我向变量添加任何内容或将该变量替换为其他内容
任何帮助都将是惊人的,我只是被卡住了
用一个jsFiddle来表示我没有疯您从来没有实际增加num的全局值。尝试以下方法:
var num = 5;
$("#correctionTable").each(function () {
num++;
tds = '<tr id="' + num + '">';
var num=5;
$(“#校正表”)。每个(函数(){
num++;
tds=“”;
Matheus还提供了一个可行的解决方案。.length()方法将返回DOM中存在的TDs数量。您可以使用each语句的内部。每次循环发生时,它将添加一个新的TD,从而增加.length()返回的数量
希望有帮助
或
var num = 5;
$("#correctionTable").each(function () {
tds = '<tr id="' + (++num) + '">';
var num=5;
$(“#校正表”)。每个(函数(){
tds=“”;
不使用ID,您可以将事件委托给表级别:
$("#correctionTable").on('click','tr',function(e){
//e.target is the clicked row
console.log(e.target); //$(e.target) to wrap it inside jQuery
});
尝试var id=$(this.find('tr').length;在哪里以及为什么?我已经在这里获取了长度…$('table tr')).length-1;我正在尝试向trs添加id…您不应该使用id或注意解释原因。在我看来,您只需将单击事件委托给表级别,然后在处理程序中使用
event.target
。这样可以避免出现错误handlers@A.Wolff我没有100个处理程序,除了jQuery之外,我还需要id为php和风格设计了它们reasons@zazvorniki再次抱歉,我想您要绑定事件:(我已经试过了……它只是做同样的事情,在每个td上加6,而不是计算。我会做一个快速的小提琴。我理解你的意思,我正在应用精确的代码……它只是不递增……它不是你的精确代码,但我可以保证它递增num的值。检查小提琴。希望这有帮助!试试putti在第二个each语句中使用你的num++。我看到你的num只随表而增加,而不是随TR/TD而增加。我也尝试过这个方法,它与上面的方法相同,只是在每个id中添加一个6的id,并且从不计数。我真的需要php的idreasons@zazvorniki没关系,有时你出于某种原因需要ID;)如果您是后端开发人员,那么您应该真正考虑更改服务器端逻辑,因为在这里,您将有100个处理程序绑定到100个元素,性能不好为什么我要在后端创建字段,而我可以在前端更轻松地创建字段。只要我有这些id,我就可以将内容发送到ddatabase。一般来说,数据库请求不需要ID,但你比我更了解你的代码。对于sureNo,你通常只需要一个名称,但是如果屏幕上有100个东西,那么如果你有一个唯一的ID,就可以更容易地查找和定位东西。
$("#correctionTable").on('click','tr',function(e){
//e.target is the clicked row
console.log(e.target); //$(e.target) to wrap it inside jQuery
});