Javascript 获取上述td小区的数据字段
我有一个按钮,可以向表中添加一行。单击即可编辑该表(类似于此处的表:) 但是,我从数据库获取表数据。每个Javascript 获取上述td小区的数据字段,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个按钮,可以向表中添加一行。单击即可编辑该表(类似于此处的表:) 但是,我从数据库获取表数据。每个都有一个数据字段属性,该属性与数据库中的字段名相匹配。现在,为了使添加的表行可以像其他行一样进行编辑,我需要使用位于其正上方单元格中的数据字段标记的。我试过几种不同的方法,但总是失败。以下是我的添加行脚本: <script type="text/javascript"> /* Add a new table row to the bottom of
都有一个数据字段
属性,该属性与数据库中的
字段名相匹配。现在,为了使添加的表行可以像其他行一样进行编辑,我需要使用位于其正上方单元格中的数据字段
标记的
。我试过几种不同的方法,但总是失败。以下是我的添加行脚本:
<script type="text/javascript">
/*
Add a new table row to the bottom of the table
*/
$(document).ready(function()
{
$(".add").click(function()
{
$("#table").each(function()
{
var $table = $(this);
var id=$('#table tr:last').attr('id');
var $tr = $("#table").children('tr');
var $th = $(this).closest('table').find('th').eq($(this).index());
// Number of td's in the last table row
var n = $('tr:last td', this).length;
var tds = '<tr class="edit_tr" id="' + id++ + '">';
for(var i = 0; i < n; i++)
{
tds += '<td class="edit_td"><input type="text" class="editbox" id="' +
id + '" data-field="' + $th + '"/> </td>';
console.log($th);
}
tds += '</tr>';
//console.log(tds);
if($('tbody', this).length > 0)
{
$('tbody', this).append(tds);
}else {
$(this).append(tds);
}
});
});
});
</script>
/*
将新表行添加到表的底部
*/
$(文档).ready(函数()
{
$(“.add”)。单击(函数()
{
$(“#表”)。每个(函数()
{
var$表=$(此);
var id=$('#表tr:last').attr('id');
var$tr=$(“#表”).children('tr');
var$th=$(this.closest('table').find('th').eq($(this.index());
//最后一个表行中的td数
var n=$('tr:last td',this).length;
var tds=“”;
对于(变量i=0;i0)
{
$('tbody',this).append(tds);
}否则{
$(此).append(tds);
}
});
});
});
现在,请注意
var$th=$(this.closest('table').find('th').eq($(this.index())代码>。这是我得到的最接近的结果。但是,我不想通过th
访问。我想按数据字段访问。有什么想法吗?您可以尝试以下方法:
var$th=$(this).closest('table').find('th').last().attr('data-field')代码>
请记住,我根本没有尝试过这一点,但您要做的是查找上次创建的
元素有一个CSS选择器,以及一个有效的属性jQuery选择器。您可以动态构建其中一个选择器,如下所示:
//找到要查找的字段的值
var currentDataField=$(“#表tr:last[data field]”)。数据('field')
//使用该值构建选择器
var previous=当前数据字段-1
变量previousSelector='[data field='+previous+']'
变量$previous=$(previousSelector);
$previous现在保存具有“previous”数据字段的任何项目。您可能需要进行更多的DOM遍历才能完成所需的操作
如果您需要澄清,请告诉我。为什么不直接通过$.attr('data-field')
因为我不知道如何获取正在创建的单元格上方单元格的数据字段。我可能会把所有最后的tr
数据字段
组成一个数组,但我不知道如何着手做这样的事情。然后我可以在for循环中执行array[I]
。//array for(var I=0;I我尝试了这个,只得到了第二个数据字段中的一个数组。你知道如何进入下一步吗?我很难理解你的例子以及它如何融入我的代码。我有:currentDataField=$('.edit_-tr:first').find('.edit_-td').first().attr('data-field');对于(var i=0;i
,它似乎几乎可以正常工作。它有一个数组,数组中有正确的第一个和第二个元素,但最后x个元素的数目与第二个相同。我看到循环中的currentDataField
每次都必须返回到元素0(或第一个标头)。如何使它保持其位置,以便.next()
从上一个元素而不是第一个元素中获取下一个元素。谢谢