为什么没有达到这个功能?

时间:2011-04-13 03:45:33

标签: jquery ajax function

为什么没有达到fadeOut的功能?每次运行该函数时,它都会刷新页面而不是使用AJAX。

<script type="text/javascript">


function deleterow(id){
if (confirm('Are you sure want to delete?')) {
$.post('delete.php', {id: +id, ajax: 'true' },
function(){
$("#row_"+id).fadeOut("slow");
});
}
}

</script>

这是php的html输出:

<button onclick="deleterow('.$entry['rowid'].')" class="fg-button fg-button-icon-left ui-state-default ui-corner-all"><span class="ui-icon ui-icon-trash"></span></button>

1 个答案:

答案 0 :(得分:3)

如果没有看到调用该函数的代码/ html,我很难肯定地说,但我认为它以某种方式附加到onclick处理程序。因此,如果您不阻止默认操作(在href标记的a之后),则会刷新页面。您需要从处理函数返回false或从中调用event.preventDefault()

我会改用这个标记:

<button 
  value="$entry['rowid']"
  class="fg-delete fg-button fg-button-icon-left ui-state-default ui-corner-all">
  <span class="ui-icon ui-icon-trash"></span>
</button>

通过在dom中编码rowid(在本例中为value),我们可以在函数中访问它,而无需将其硬编码到函数调用中并使处理程序保持不引人注意。

// pulling this into a full definition for clarity
// you could of course just use an anon function inside you $.click call
function handleDelete(event){
   event.preventDefault();
   var $this = $(this);
   var rowId = $this.val();
   deleterow(rowId);
   return false;
}


$('button.fg-delete').click(handleDelete);

演示:http://jsfiddle.net/eBa7v/1/