2010-09-05 37 views
1
$(document).ready(function() {  
    $('a#fav').bind('click', function() { 
     addFav(<?php echo $showUP["uID"]; ?>); 
    }); 
}); 


function addFav(id){ 
    $.ajax({ 
     url: "misc/favAdd.php", 
     data: { id: id}, 
     success: function(){ 
      $('a#fav') 
       .addClass('active') 
       .attr('title','[-] Remove as favorite') 
       .unbind('click') 
       .bind('click', removeFav(id)) 
      ; 
       jGrowlTheme('wallPop', 'mono', '[+] Favorit', 'Du har nu lagt till denna profil som favorit', 'images/addFavorit_hover2.png', 1000); 
     } 
    }); 
} 

function removeFav(id){ 
    $.ajax({ 
     url: "misc/favRemove.php", 
     data: { id: id }, 
     success: function(){ 
      $('a#fav') 
       .removeClass('active') 
       .attr('title','[+] Add as favorite') 
       .unbind('click') 
       .bind('click', addFav(id)) 
      ; 
          jGrowlTheme('wallPop', 'mono', '[-] Favorit', 'Du har nu tagit bort denna profil som favorit', 'images/addFavorit_hover2.png', 1000); 
     } 
    }); 
} 

我有這個問題,當我點擊#fav,然後它addClass活動,並刪除它,並添加和刪除併發送一堆ajax本身..它變得瘋狂。 我不想那樣,我想要它,所以當你點擊一個#fav它添加類(發送ajax調用),然後當你再次點擊它發送ajax調用並刪除類。它就這樣下去......jQuery:它的addclass,刪除類本身?

我做錯了什麼?

+2

你甚至閱讀回答你的問題?我[特意回答](http://stackoverflow.com/questions/3646162/jquery-bind-onclick/3646168#3646168)在你最後一個問題。閱讀你已經閱讀的答案比查詢另一個重複問題更快。 – 2010-09-05 15:17:33

回答

3

通過寫.bind('click', removeFav(id)),您呼叫removeFav立即和返回值傳遞給bind功能。

相反,你需要通過調用removeFav的功能,如:

   .bind('click', function() { removeFav(id); }) 

(同樣地,對於addFav更高版本)

+0

'.bind('click',removeFav(id)'看起來不對,需要用匿名,+1 – RobertPitt 2010-09-05 15:14:50