2011-04-13 51 views
0

为什么没有达到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> 
+2

检查JavaScript控制台中的错误。 – 2011-04-13 03:55:49

+3

'id:+ id'看起来像是错误。 – 2011-04-13 04:20:33

+0

这与你的报价嵌套三个深度的事实有什么关系?即“''没有注册的部分''”也许尝试转义那些引号? – 2011-04-13 04:52:02

回答

3

它很难肯定说没有看到代码/ HTML调用的功能,但我想这是连接到onclick处理器不知何故。因此,如果您不阻止默认操作(在a标记的href之后),它将刷新页面。您需要从处理函数返回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编码(在这种情况下value)的ROWID,我们可以在我们的函数访问它,而不必硬编码到函数调用保持处理器不显眼。

// 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/

+0

是的,这是正确的,我正在使用一个按钮onclick。我想过要做preventDefault()。我是否必须通过函数参数传递事件? – 2011-04-13 03:55:47

+0

是的,事件处理程序将事件对象作为它们的唯一参数,但是您可以指定任意数据的散列以在该事件对象内传递......发布您的标记,我可以举一些例子。 – prodigitalson 2011-04-13 03:56:59

+1

只是'返回false'; – jcane86 2011-04-13 03:58:48