2010-06-03 22 views
0

我在我的應用程序中有一個最喜歡和不喜歡的功能,我正在使用jQuery。該功能部分起作用。頁面被加載,當我點擊'收藏'按鈕(它位於add_favourite_div元素內部)時,它發送XHR請求並將該帖子設置爲收藏夾。然後,一個名爲「remove_favourite_div」的新div將替換它的位置。現在,當我單擊remove favorite(它是remove_favourite_div的一部分)時,它會在xhr內發送一個正常的http請求。點擊unfavourite按鈕使用Rails和jQuery的Ajax請求問題

<div id="favourite"> 
    <div id="remove_favourite_div"> 
    <form method="post" id="remove_favourite" action="/viewpost/remove_favourite"> 
     <div style="margin: 0pt; padding: 0pt; display: inline;"> 
      <input type="hidden" value="w873BgYHLxQmadUalzMRUC+1ql4AtP3U7f78dT8x9ho=" 
      name="authenticity_token"> 
     </div> 
     <input type="hidden" value="3" name="Favourite[post_id]" id="Favourite_place_id"> 
     <input type="hidden" value="2" name="Favourite[user_id]" id="Favourite_user_id"> 
     <input type="submit" value="UnFavourite" name="commit"><br> 
    </form> 
    </div> 
</div> 

在我的application.js後

當網頁被加載結構首次

<div id="favourite">   
    <div id="add_favourite_div"> 
    <form method="post" id="add_favourite" action="/viewpost/add_favourite"> 
     <div style="margin: 0pt; padding: 0pt; display: inline;"> 
      <input type="hidden" 
      value="w873BgYHLxQmadUalzMRUC+1ql4AtP3U7f78dT8x9ho=" 
      name="authenticity_token"> 
     </div> 
     <input type="hidden" value="3" name="Favourite[post_id]" 
     id="Favourite_place_id"> 
     <input type="hidden" value="2" name="Favourite[user_id]" id="Favourite_user_id"> 
     <input type="submit" value="Favourite" name="commit"><br> 
     </form> 
    </div> 
</div> 

DOM,我有兩個功能觸發XHR請求

$("#add_favourite").submit(function(){ 
     alert("add favourite"); 
     action = $(this).attr("action") 
     $.post(action,$(this).serialize(),null,"script"); 
     return false; 
    }); 

$("#remove_favourite").submit(function(){ 
     alert("remove favourite"); 
     action = $(this).attr("action"); 
     $.post(action,$(this).serialize(),null,"script"); 
     return false; 
    }); 

在這裏,當帖子最初不是最喜歡的,最喜歡的對接on顯示,當我點擊按鈕時,$(「#add_favourite」)。submit被調用,並且不正確的窗體顯示正確,但現在當我點擊不喜歡的按鈕時,$(「#remove_favourite」)。submit不會被調用。

整個場景是真實的這兩種方式,我的意思是favourite-> Unfavourite和Unfavourite->喜愛

有人可以幫我解決這個 感謝

回答

0

我沒有看到的機制實際上會導致「remove_favourite_div」取代「add_favourite_div」。如果它是動態完成的,並且在附加了事件處理程序之後,那麼問題就是您的$("#remove_favourite").submit(function(){...});發生在頁面上有任何此類表單之前。

連接那些相同的事件處理程序換出div年代後,它應該工作的罰款。