Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery为DOM事件订阅多个处理程序_Javascript_Javascript Events_Jquery - Fatal编程技术网

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

Javascript 使用jQuery为DOM事件订阅多个处理程序,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,我正试图通过css类订阅事件。我有两个处理程序,定义如下: $(document).ready(function() { $('.refresh-cart').click( function(e) { alert('refreshing'); }); $('form.ajax').submit( function(e) { e.preventDefault();

我正试图通过css类订阅事件。我有两个处理程序,定义如下:

$(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');
        }
    );
});
当这些处理程序重叠时,我无法获得预期的功能

通过发出“post”警报并提交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>


我做错了什么?如何使两个处理程序都启动?

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

$(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;
     });
});

它对我很管用

但是,在显示第二个警报框之前,您必须关闭第一个警报框


你的代码在

上运行,对我来说也很好。我认为你也应该考虑Ajax提交的jQuery表单插件,并且从提交到按钮

改变输入类型。我没有发现你提到的两个代码有任何变化。above@Abdul卡德,编辑好了。第一个代码示例在submit按钮上没有类。我没有尝试过这个,因为它没有实现目标。页面上有多个ajax表单。其中只有一个应该刷新购物车。还有多个元素可以刷新购物车,其中只有一个元素是表单