如何通过ajax调用将已删除的行名从jQuery中的网格传递到控制器(服务器端)

How do I pass the deleted row name from a grid in jQuery to controller(server-side) with ajax call

本文关键字:网格 服务器端 控制器 jQuery 调用 ajax 何通过 删除      更新时间:2023-09-26

我在jQuery成功函数中添加了一行到网格,像这样(编辑添加Rob和Fleix评论):

 $(function() {
        $('#MyGrid').delegate('a.remove', 'click', function() {
            alert("del");
           // e.preventDefault();
jQuery.ajax(
        {
            type: "POST",
            url: "Upload/Remove",
            data: "removefile=" + stringhtml// error console shows it as undefined
        });
            $(this).closest('tr').remove();
        });
            $("#uploadForm").ajaxForm({
                iframe: true,
                dataType: "xml",
                url: "Upload/Index",
                success: function(result) {
        ('#MyGrid tbody').append('<tr><td> ' + stringhtml+ ' </td><td><a href="#" 
                class="remove">Remove</a></td></tr>');
              });
    });

ajax调用不是为了删除点击,而是在页面加载后点击。如何使ajax调用删除点击,与传递stringhtml?你们能帮帮我吗?

谢谢你,

michaeld

绑定删除链接的点击事件

$('#MyGrid').delegate('a.remove', 'click', function(e){
    e.preventDefault();
    $(this).closest('tr').remove();
});

将行追加代码更改为

$('#MyGrid tbody').append('<tr><td> ' + stringhtml+ ' </td><td><a href="#" class="remove">Remove</a></td></tr>');

首先,更新你的"Remove"链接,使它像:

<a href="#" onclick="remove(this.parentNode)">Remove</a>

然后像这样实现你的remove()函数:

function remove(node) {
    node.parentNode.parentNode.removeChild(node.parentNode);
    //equivalent:  $('#MyGrid tbody')[0].removeChild(node.parentNode);
}

下面是一个例子:http://jsfiddle.net/nNde4/5/

首先,避免使用内联的onclick属性。用$(selector).bind('click', function(e){});$(selector).click(function(e){});代替。在您的情况下,实际上使用live()会更有意义,因为您不必一遍又一遍地附加每个事件。所以使用下面的代码应该可以工作:

$('#MyGrid a').live('click', function(e){
    $(e.target).parent().parent().remove();
});

还要注意,您不必在每次添加行时都调用此方法。只在创建标签时调用一次(加载等),它应该工作得很好