可重用的jQuery删除功能

Nil*_*ers 2 asp.net asp.net-mvc jquery

我使用以下函数删除表中的行

//delete individual row
jQuery('.stdtable img.delete').click(function(){
    var c = confirm('Continue delete?');
    if(c) jQuery(this).parents('tr').fadeOut(function(){ 
        jQuery(this).remove();
    });
    return false;
});
Run Code Online (Sandbox Code Playgroud)

此代码位于单独的js文件中,并且对所有页面都是通用的.现在我想添加一个Ajax操作,删除数据库中的行.但是根据我所在的页面,它必须调用不同的控制器.

示例:产品页面必须在ProductController中调用delete,ProductGroup页面必须在ProductGroupController中调用delete

怎么办呢?

Ror*_*san 5

如果需要某种方法来定义要调用的控制器,可以data在表上放置一个属性.像这样的东西:

<table class="stdtable" data-remove-url="@Url.Action("DeleteRow", "MyController")">
    <tr data-id="1">
        AAA
        <img class="delete" src="foo.jpg" />
    </tr>
    <tr data-id="2">
        BBB
        <img class="delete" src="foo.jpg" />
    </tr>
 </table>
Run Code Online (Sandbox Code Playgroud)

然后在您的jQuery中,您可以将此值作为url请求的参数以及id要删除.

jQuery('.stdtable img.delete').click(function(e) {
    e.preventDefault();
    if (confirm('Continue delete?')) {
        var $el = $(this);
        var $tr = $el.closest('tr');
        var url = $el.closest('table').data('remove-url');
        var id = $tr.data('id');

        $tr.fadeOut(function() { 
            $el.remove();
            $.post(url, { rowId = id }); // do the delete on the server 
        });
    }
});
Run Code Online (Sandbox Code Playgroud)