2010-08-01 94 views
0

我有一個PHP應用程序,其中的一個頁面具有刪除功能。我允許用戶通過點擊標籤從他們的個人資料中刪除標籤。一旦用戶點擊了標籤,之前顯示標籤的HTML中的內容區域就會被新的一組標籤更新。jquery通過AJAX刪除內容

現在問題是,從標籤列表中,第一次用戶單擊標籤時,它將被刪除。如果用戶現在單擊另一個標籤(來自刷新區域),則不會發生任何事情。

$("a.single_tag").click(function(){ 
    the_id = $(this).attr('id'); 
    $.ajax({ 
     type: "POST", 
     data: "data="+the_id, 
     url: "<?php echo site_url('user/deletetag/');?>/", 
     success: function(msg) 
     { 
      $("#current_tags").fadeIn("slow"); 
      $("#current_tags").html(msg); 

     } 
    }); 

感謝

回答

5

除了使用.click()這個的,你要.live('click', func),像這樣:

$("a.single_tag").live('click', function() { 

當您使用.click()你一個click處理結合這些元素,但是當內容被替換時,沒有處理程序的新元素就在那裏。使用.live()它會偵聽click事件,當它觸發document並執行...當頁面加載或稍後添加時是否存在該元素,這並不重要...修復您的問題:)

+0

+1 Sweet,我不知道live() – naikus 2010-08-01 05:43:12

+0

感謝Nick。我以前不知道.live事件。 – 2010-08-01 06:01:45

0

您需要將一大塊綁定代碼放在一個函數中,並在成功回調中調用它,或者只更新已更新標記的HTML(即,返回要刪除的id或要添加的html塊,而不是重新顯示整塊)。

更新內容時,.click綁定不存在於新的a標記中。

編輯:@Nick Craver的解決方案好多了。

0

這是因爲剛剛從服務器收到的新html標籤沒有在點擊時綁定到他們的「刪除」功能。