2011-04-12 98 views
0

我試圖通過css類來訂閱事件。我有兩個處理器,定義如下:使用jQuery訂閱DOM事件的多個處理程序

$(document).ready(function() { 
    $('.refresh-cart').click(
     function(e) { 
      alert('refreshing'); 
     }); 

    $('form.ajax').submit(
     function(e) { 
      e.preventDefault(); 
      $.post(
       this.action, 
       $(this).serialize(), 
       function(data, textStatus, jqXHR) { alert('post'); }, 
       'text'); 
     } 
    ); 
}); 

當這些處理重疊的,我沒有得到預期的功能。

此代碼正常工作,通過提醒'發佈'並提交ajax請求。

<form action="page.html" method="post" class="ajax"> 
    <input type="text" name="Sample" value="SampleValue" /> 
    <input type="submit" /> 
</form> 

此代碼正常工作,通過警告「清新」

<div class="refresh-cart">Refresh Widget</div> 

然而,當這些重疊(如在下面的例子中)時,只有「刷新推車的訂戶火災。

<form action="page.html" method="post" class="ajax"> 
    <input type="text" name="Sample" value="SampleValue" /> 
    <input type="submit" class="refresh-cart" /> 
</form> 

我在做什麼錯,我該如何讓這兩個處理程序觸發?

+0

我沒有發現你在上面提到的兩個代碼的任何變化 – 2011-04-12 10:11:35

+0

@Abdul Kader,編輯。第一個代碼示例沒有提交按鈕上的類。 – smartcaveman 2011-04-12 10:19:40

回答

0

您是否嘗試過從點擊處理程序提交表單?

$(document).ready(function() { 
    $('form.ajax').submit(
     function(e) { 
      e.preventDefault(); 
      $.post(
       this.action, 
       $(this).serialize(), 
       function(data, textStatus, jqXHR) { alert('post'); }, 
       'text' 
      ); 
    }); 

    $('.refresh-cart').click(
     function(e) { 
      alert('refreshing'); 
      $('form.ajax').submit(); 
      return false; 
    }); 
}); 
+0

我沒有試過這個,因爲它沒有完成目標。頁面上有多個Ajax表單。其中只有一個人應該刷新購物車。還有多個刷新購物車的元素,其中只有一個是表單。 – smartcaveman 2011-04-12 10:28:36

+0

這些句子應該在問題:) – Calum 2011-04-12 10:31:54

0

它對我來說也很好。我認爲你也應該考慮jQuery插件here阿賈克斯提交和改變輸入類型從提交到按鈕

相關問題