使用jquery更新动态生成的表行,单击编辑链接时

时间:2015-03-05 09:29:07

标签: jquery jsp

如何使用jquery更新动态生成的表行?我可以获取一行,但无法更新它。 我应该调用add函数还是我必须为它编写一个新函数?

//Edit function
        $('#list').on('click', 'td:last-child', function (e) {
            var $tr = $(this).parent(),
                $tds = $tr.children(),
                sname = $tds.eq(0).text().trim(),
                mon = $tds.eq(1).text().trim();
                year = $tds.eq(2).text().trim();
            $('#G1 option').each(function () {
                if ($(this).text().trim() == sname) {
                    $(this).prop('selected', true);
                    return false;
                }
            });
            $('#H1 option').each(function () {
                if ($(this).text().trim() == mon) {
                    $(this).prop('selected', true);
                    return false;
                }
            });
            $('#I1 option').each(function () {
                if ($(this).text().trim() == year) {
                    $(this).prop('selected', true);
                    return false;
                }
            });
            $('#J1').val($tds.eq(3).text().trim())
            $('#E1').val($tds.eq(4).text().trim())
            e.preventDefault();
                $('#irow').click();    //for update
        });

这是正确的方式..?有人可以建议我如何更新特定的行.... 这是我的演示代码,它是如何工作的,http://jsfiddle.net/ca078/runsn84r/2/ 请帮我更新表格的特定行....

1 个答案:

答案 0 :(得分:0)

将$ tds声明为public,当您单击编辑按钮时,隐藏添加按钮并显示更新按钮使用以下代码进行更新按钮事件

$("#btnUpdate").on("click"),function(){

      $tds.eq(0).text(value1);
      $tds.eq(1).text(value2);
      $tds.eq(2).text(value3);
});

如果你在一个函数中声明一个变量,那么它的作用域只在那个函数中,并且在这种情况下它是一个私有变量,在声明像这样的add和update方法之前声明$ tds

var $tds=null;

        $('#list').on('click', 'td:last-child', function (e) {
var $tr = $(this).parent(),
                $tds = $tr.children(),
..................
.........

});

$("#btnUpdate").on("click"),function(){
 $tds.eq(0).text(value1);
....................
..............
});

每次单击编辑按钮时,$ tds值都会使用新值更新,因为它在函数外部声明,您可以使用$ tds进行更新方法