使用jQuery订阅DOM事件的多个处理程序

问题描述:

我试图通过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

它工作得很好,我..

你必须关闭第一个警告框,不过,可以看出前一秒..

代码住在http://jsfiddle.net/gaby/W3zC4/

您是否尝试过从点击处理程序提交表单?

$(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

它对我来说也很好。我认为你也应该考虑jQuery插件here阿贾克斯提交和改变输入类型从提交到按钮