删除行刷新页面jquery

时间:2013-04-16 09:06:06

标签: javascript jquery

我的jquery遇到了问题。我已经使用jQuery向表添加控件,以及删除按钮以删除表中的特定行。这是关于我如何在表格中创建控件的代码。

HTML

<table id="controls" cellpadding="10" cellspacing="10">
</table>
<input id="btnAdd" type="button" value="Add" />

我的jquery代码看起来像这样

jquery的

$(document).ready(function() {
            $("#btnAdd").click(function() {
        var field = $("#field").val();
                var year = new Date().getFullYear()
                var DDL_fromProfession = "<select name='ParametersFromProf' id='DDL_FromProYear'>";
                for (var i = 1950; i <= year; i++) {
                    DDL_fromProfession += "<option text='" + i + "' value='" + i + "'>" + i + "</option>";
                }
                DDL_fromProfession += "</select>";
                var DDL_ToProfession = "<select name='ParametersToProf'  id='DDL_ToProYear'>";
                for (var i = 1950; i <= year; i++) {
                    DDL_ToProfession += "<option text='" + i + "' value='" + i + "'>" + i + "</option>";
                }
                DDL_ToProfession += "</select>";

                var newRow1 = "<tr><td align='center' style='font-size: large; color: #212121;' height='35px'>from"
                 + DDL_fromProfession + " to " + DDL_ToProfession + "</td></tr>"
                 + "<tr><td align='center' style='font-size:large;color:#212121;' height'35px'>"
                 + "<input type='checkbox' name='chkbx_CurrPro' value='" + k + "'>I currently work here</input>";
                newRow1 += "<br/><button id='btn_rmv'>Remove</button>";


                var input = "<input name='parameters' id='field' type='text' />";
                var input1 = "<input name='parametersCompany' id='field' type='text'/>"

                //var inputCurrent="<input name='Current' id='Currfield' type='hidden'/>"

                var newRow = "<tr><td align='center' style='font-size: x-large; color: #212121;' height='35px'>"
                 + input + " at " + input1 + "</td></tr>";
                $('#controls').append(newRow);
                $('#controls').append(newRow1);
            });
        });

删除我正在使用的最后一行。 的 jquery的

$(document).ready(function() {

            $("#controls").delegate("#btn_rmv", "click", function() {
                $(this).closest("tr").remove();
                return false;
            });
        });

单击“删除”按钮刷新页面并删除我添加的所有行而不是最后一行。 注意:我所挖掘的是.delegate是服务器端并刷新页面。我无法删除我页面上$("#btn_rmv").click(function()的最后一行

请指出正确的方向。 提前致谢

4 个答案:

答案 0 :(得分:1)

我有类似的经历:我使用谷歌浏览器,每次调用一个函数时它都会刷新页面。你将不得不返回false。我的问题是当我使用“onclick”从元素调用函数时。当我从onclick调用函数时,我必须包含“return false;”:

onclick="return false; functionName()"

试试这个,看它是否有效:

$(document).ready(function() {
    $("#btnAdd").click(function() {
        /* YOUR CODE */

        return false;
    });
});

或者看看它是否有效:

$(document).ready(function() {
    $("#btnAdd").click(function() {
        /* YOUR CODE */            
    });

    return false;
});

抱歉我的Javascript不是很好:(

答案 1 :(得分:1)

你可以这样做..

   var RowCount = 0;

    $(document).ready(function() {

        $("#btnAdd").click(function() {
            RowCount = RowCount + 1;

            var newRow1 = "<tr id='tr" + RowCount + "'><td align='center' style='font-size: large; color: #212121;' height='35px'>from"
             + DDL_fromProfession + " to " + DDL_ToProfession + "</td></tr>"
             + "<tr><td align='center' style='font-size:large;color:#212121;' height'35px'>"
             + "<input type='checkbox' name='chkbx_CurrPro' value='" + k + "'>I currently work here</input>";

            newRow1 += "<br/><button id='btn_rmv' onclick='RemoveRow(" + RowCount + ")'>Remove</button>";
        });

    });

    function RemoveRow(RowID) {
        $('#RemoveRow' + RowID).remove();
    }

答案 2 :(得分:1)

看起来你正在联系$(document).ready上的删除点击处理程序。

在document.ready上,删除按钮尚不存在(因为它们是在运行document.ready代码后单击“添加”时动态生成的)。这就是$("#btn_rmv").click(function()...无效的原因。

因此,在$("#btnAdd").click事件中动态插入删除按钮后,您必须明确添加一个点击处理程序。

编辑:

如果您使用唯一ID生成删除按钮(例如btn_rmv_1,btn_rmv_2等),则可以将以下内容添加到Add-handler(将新按钮附加到DOM后):

$('#btn_rmv_1').click(removeButtonFunction);

答案 3 :(得分:1)

有问题的代码不起作用,因为未在行中使用k

value='" + k + "'

如果此错误得到纠正,则下一个问题是您要创建多个具有相同id的元素,如此处所示

newRow1 += "<br/><button id='btn_rmv'>Remove</button>";

在无效的HTML中,会导致jQuery在找到具有唯一 id的元素时遇到问题。

通过更改k 0并将id更改为class删除代码 >按下按钮,删除当前行。我假设您确实要删除该行以及前两行。

$('#controls').delegate('.btn_rmv', 'click', function() {
    var index = $(this).closest('tr').index() + 1 // as nth-child is 1-based indexing
    $('#controls tr:nth-child(n+' + (index - 2) + '):nth-child(-n+' + index + ')').remove(); // remove 3 rows
    return false
});

See demo

请注意,自jQuery 1.7起,.delegate().on()取代,因此更新后的函数为:

$('#controls').on('click', '.btn_rmv', function() {
    var index = $(this).closest('tr').index() + 1
    $('#controls tr:nth-child(n+' + (index - 2) + '):nth-child(-n+' + index + ')').remove();
    return false
});