2011-12-02 135 views
1

我知道我需要使用。像。活着得到這個工作,但我只是在這裏混淆h3ll。刷新ldiv內容後jQuery不工作

我有一個從數據庫中拉出的數據列表。每個項目都附有一個表格,用於從數據庫中刪除該項目。這裏

OK是對錶單提交功能:

$(document).delegate('#delete_cat_form','submit', function() { 

    var cat = $('#cat-name-imput').val(), 
    id = $('#cat-id-imput').val(); 

     $.post("ajax.php", {name:cat,id:id,action:'delete_cat'}, function(data){ 

       //Display a brief message! 
       $("#message").fadeIn(3000).html(data); 

       $("#message").fadeOut(3000).html(data); 

       refreshMenu(); // Refresh Menu      
      }); 

    return false; 

}); 

刷新菜單功能是這樣的:

function refreshMenu(){ 

    $('.menu-million-dollar-wrapper').load('ajax.php', {action:'refreshMenu'}, function(data){ 

    }); 

} 

功能對文檔的初始負荷工作,但只有一次。在ajax從ajax.php返回更新查詢之後,似乎所有的事件處理程序都消失了,並且沒有任何工作再次發生。

我嘗試閱讀一些似乎可能相同的答案,但由於某種原因我無法理解這個概念。

如何對新內容進行查詢並顯示它,同時又不會丟失任何事件處理程序?

這裏是ajax.php調用時的回報。這是什麼原料,但我已經證實,它並返回完全相同的HTML,但更新,越來越多的項目

<form class="edit-button" method="post" action="'.$_SERVER['PHP_SELF'].'"> 
    <input type="hidden" name="name" value="'.$row['name'].'"/> 
    <input type="hidden" name="id" value="'.$row['id'].'"/> 
    <input type="hidden" name="action" value="delete_cat"/> 
    <input type="submit" value="Delete"/> 
</form> 

$_SERVER['PHP_SELF']是不正確的,但應在這個問題上不起作用。

這是用於初始顯示加載窗體的代碼。

+0

我們可以看看你的html結構嗎?似乎'#delete_cat_form'正在被新內容取代。 –

+0

不相關,但您應該使用'$(this).serialize()'而不是'{name:cat,id:id,action:'delete_cat'}'。如果你想添加一個字段,你只需要保持你的表單是最新的。 – Robin

+0

'

\t \t \t \t \t \t \t \t \t \t
' –

回答

0

嘗試所有的元素轉變爲類,而不是身份證,既然你提到那裏有不止一個。

​​
+0

這使得自而是先加載,但沒有新的內容有後時爲什麼會工作已經加載 –

+0

老實說,不知道。我的猜測是,標識應該是唯一的,因此他們可能會以特殊的方式來處理。這不是一個很好的猜測,雖然,因爲。對方式()的作品,它不應該關心。 – rkw

+0

感謝的人..你帶我上野生的追逐,導致我發現什麼問題是笑 我不知道,如果類,其中修復,但我也注意到了小姐拼寫「開關輸入」是不正確的HTML。我仍然不知道爲什麼它在第一次加載時工作,但現在它工作。 –

0

這是執行異步:

$("#message").fadeIn(3000).html(data); 
$("#message").fadeOut(3000).html(data); 

在同一時刻你淡入淡出相同的消息。 相反,您應該在淡入完成後淡出。

查看manula,http://api.jquery.com/fadeIn/,第一個參數是fadeing函數完成時的回調函數。

+0

我已OU數據庫返回的數據在div t爲淡入淡出,並完全... –

0

在jquery中大部分都可以接受回調函數。裏面的功能被淡化後執行,從而代替

$("#message").fadeIn(3000).html(data); 
$("#message").fadeOut(3000).html(data); 

做到這一點

$("#message").fadeIn(3000, function() { 
    $(this).html(data); 
    $("#message").fadeOut(3000).html(data); 
}); 

的東西,在完成

+0

感謝這個...我會改變這個時候我能夠獲取表單正常工作 –