我不知道它是否更适合与AJAX一起使用(告诉我,否则)但这是我的问题:
假设我正在使用 Zend Framework ,我有一个表,其中包含来自数据库的多个注册表,每行都有一个删除按钮。就像这样
[...]
<tbody>
<?php foreach ($row as $reg) { ?>
<tr <?php if ($reg['value'] < 0) { echo "class='error'"; } ?>>
<td><?php echo $reg['creditor'] ?></td>
<td><?php echo $reg['debtor'] ?></td>
<td><?php echo $reg['reason'] ?></td>
<td>R$ <?php echo number_format(abs($reg['value']), 2, ',', ' ')?></td>
<td><a href="#" id="<?php echo $reg['id']; ?>" class="delete"><img src="http://192.168.0.102/libraries/css/blueprint/plugins/buttons/icons/cross.png" alt=""/></a></td>
</tr>
<?php } ?>
</tbody>
[...]
我希望.fadeOut()
和删除(通过链接 history / delete / id / ROW_ID )在相应的删除按钮中单击表格行
我的 deleteAction()没有渲染。它真的不应该有一个,它只删除数据库中的一行。不过,我怎么能实现呢?
我试过了:
// TR Fading when deleted
$('.delete')
.click(function() {
$.ajax({
type: 'GET',
url: 'history/delete/id/'+$(this).attr('id'),
success: function() {
$(this).parent().parent().fadeOut();
}
});
return false;
});
没有成功
答案 0 :(得分:1)
this
引用没有引用你想要的内容(你点击的.delete
元素)success
函数(它稍后作为回调运行),但你可以修复使用$.proxy()
,如下所示:
$('.delete').click(function() {
$.ajax({
type: 'GET',
url: 'history/delete/id/'+$(this).attr('id'),
success: $.proxy(function() {
$(this).closest('tr').fadeOut();
}, this)
});
return false;
});
.closest('tr')
只是获取父<tr>
的一种较短方式,代理位是实际修复。