在MVC中,我通过迭代视图模型的“列表”,在视图中构造了一个表。
@foreach(var item in Model)
{
<tr id="row-@item.name">
<td>
@item.type
</td>
<td >
@Html.ActionLink((string)item.name, "Download", "FileUpload", new { rout = item.rout, fileName = item.name }, null)
</td>
<td>
@item.size
</td>
<td>
<a href="#" id="delete-file" del-url="@item.delete_url">Delete</a>
</td>
</tr>
}
当我加载页面时,我得到了一个文件列表,每个文件都有一个'delete‘链接。
我用jQuery实现了一个基本的'remove row‘方法:
$('#delete-file').click(function() {
var delUrl = $(this).attr('del-url');
$.post(delUrl, null, removeRow(),'json')
});
function removeRow() {
$($('#delete-file').closest('tr')).fadeOut('slow');
}
当我在一个文件行上单击“删除”时,它执行得很好,但是如果我单击另一个行(删除),什么也不会发生。服务器上没有删除任何文件,行也没有被删除,就好像它被完全忽略了一样。
发布于 2012-05-20 22:48:54
您需要使用class="delete-file"
而不是id="delete-file"
-当然还有相应的$(".delete-file")
选择器。
每个文档的ID都应该是唯一的,并且您的代码将处理程序绑定到第一个id="delete-file"
元素。
发布于 2012-05-20 22:52:20
以下是您的解决方案:
http://jsfiddle.net/irpm/enEAt/1/
javascript是:
$('.delete-file').click(function(e) {
$(this).closest('tr').remove();
});
发布于 2012-05-20 22:53:22
您需要阻止<a>
元素的默认操作,并使用正确的选择器
$('.delete-file').click(function(e) {
e.preventDefault();
var self=this,
delUrl = $(this).attr('del-url');
$.post(delUrl, function() {
$(self).closest('tr').fadeOut('slow');
},'json');
});
https://stackoverflow.com/questions/10674370
复制相似问题