2011-11-07 39 views
0

在給出解決方案之前。請閱讀我的第一個問題Click Here使用.on()但數據提交乘以

所以我所有的第一個問題都解決了。但數據提交繁殖。例如:當我第一次點擊。它提交一次。當我點擊第二次。它提交兩次。等等...如何解決它?很迷惑

在這裏我簡單的代碼

$(document).on('click','.page-info',function(){ 
     $('a[href|="#status-page"]').click(function(event){ 
      //DO THE SUBMIT DATA HERE 
      event.preventDefault(); 

      //alert('testing'); 

      //href=#page-{id} 
      var n='#status-page'.length; 
      n++; 

      var href=$(this).attr('href'); 
      //pageid=get the href {id} 
      //pageid=id 
      var pageid=href.substr(n); 

      //Change status on database 
      $.get(CHANGE_STATUS+'/'+pageid); 

      //Change value status to active/disable 
      var selector='#status-page-'+pageid; 

      var status=$(this).html(); 

      if(status=='Active'){ 
       status='Disable'; 
      } 
      else 
      { 
       status='Active'; 
      } 

      //Change status 
      $(selector).html($(this).html()); 
      $(this).html(status); 

      var theStyle=(status!='Active')?'isGood':'isBad'; 
      $(selector).removeClass('isBad isGood').addClass(theStyle); // This code didn't work too :((
     }); 


    }); 

這裏我簡單的HTML

<tr class="page-info"> 
    <td> 
     <span class="isAction"><a href="#status-page-50">Disable</a> | <a href="#">Delete</a></span> 
     <h5><a href="#page-50">Project P</a></h5> 
     <p><strong>Project P</strong> - </p> 
    </td> 
    <td>2011-11-07 03:19:24</td> 
    <td> 
     <span class="cms_Status isBad"> 
      Disable  </span> 
    </td> 
</tr> 

在我的網頁我有形式,可以用jQuery添加數據,這樣做:

  1. 發佈數據
  2. 獲取數據
  3. 後最後一個「第-信息」 Appand數據

回答

0

你有你的.page-info<tr>元素(一個或多個)上定義一個單擊處理程序和該處理程序中添加點擊處理程序<a>元素。因此,當您點擊<a>其處理程序被調用,然後事件「冒泡」到包含的<tr> - 並且<tr>上的處理程序繼續向<a>添加第二個點擊處理程序。下次單擊它時會添加第三個點擊處理程序,然後是第四個點擊處理程序,等等。這些多個處理程序不會相互替換,它們都保持活動狀態並被一個接一個地調用。

您可以從「冒泡」,由處理程序上<a>點擊添加內停止event.stopPropagation();的情況,但實際上並不會幫助不大,因爲點擊<tr>的其他地方仍然會觸發其點擊添加更多的處理程序<a>

我不明白你爲什麼需要處理器.page-info<tr>擺在首位。你能解釋一下嗎?我的衝動,只是刪除線1和5,即你的代碼的第一個和最後一個行刪除.page-info<tr>單擊處理:

1 $(document).on('click','.page-info',function(){ // <-- delete 
2  $('a[href|="#status-page"]').click(function(event){ 
3   // many lines of your code here 
4  }); 
5 });            // <-- delete this line 

(順便說一句,這個答案是基於所提供的信息負全部在這個問題中 - 我感到胡思亂想,不會爲打算閱讀一些其他問題而煩惱,以獲得這個問題的背景:我該如何知道另一個問題的哪些部分適用?您應該提供所有的必要的背景在這裏。)

+0

這個問題已經解決之前,我讀我的stackoverflow的問題。那麼爲什麼我用()。因爲內容是動態的。我使用AJAX。所以,如果我使用常規方法jQuery沒有找到動態ID。所以我必須使用.on()或.live()方法來解決這個問題。但是,我又遇到了另一個我上面解釋的問題。但我靠自己解決了。 Thx爲您的參與。 Hehehehe .... – Kenjiro

+0

@鑑次郎一旦你自己解決了,分享答案是一個很好的習慣。 –