Javascript 在jQuery中处理多个单击事件,其中顺序很重要

Javascript 在jQuery中处理多个单击事件,其中顺序很重要,javascript,jquery,mouseclick-event,event-handling,Javascript,Jquery,Mouseclick Event,Event Handling,我正在开发一个使用ajax的php应用程序。在我想让jQuery劫持链接的所有链接上,我将类ajaxlink直接添加到链接中 <a class="someclass ajaxlink" href="somelocation1">goto1</a> <a class="someclass ajaxlink" href="somelocation2">goto2</a> <a class="someclass ajaxlink" href="so

我正在开发一个使用ajax的php应用程序。在我想让jQuery劫持链接的所有链接上,我将类ajaxlink直接添加到链接中

<a class="someclass ajaxlink" href="somelocation1">goto1</a>
<a class="someclass ajaxlink" href="somelocation2">goto2</a>
<a class="someclass ajaxlink" href="somelocation3">goto1</a>
如果用户启用了JavaScript,他将通过ajax获得页面。一个特殊的我有一个多个页面,所以我有相同的函数为所有页面生成相同的链接

现在我的问题是一个页面中的一个链接,我想做一些不同的事情。当ajax页面成功返回时,它必须启动另一个函数。现在我有了这样的代码

<div class"specialclass">
    <a class="someclass ajaxlink" href="somelocation1">goto1</a>
    <a class="someclass ajaxlink" href="somelocation2">goto2</a>
    <a class="someclass ajaxlink" href="somelocation3">goto1</a>

    <a class="someclass ajaxlink special-1" href="somelocation">goto</a>
    <a class="someclass ajaxlink special-2" href="somelocation">goto</a>
    <a class="someclass ajaxlink special-3" href="somelocation">goto</a>
</div>

$('.ajax-link').click(function(){get link with ajax});
$('.specialclass .special-1,
   .specialclass .special-2,
   .specialclass .special-3').click(function(){get link with ajax});

$('.ajax link')。单击(函数(){get link with ajax});
$('.specialclass.special-1,
.specialclass.special-2,
.specialclass.special-3')。单击(函数(){get link with ajax});
这是因为我希望同一容器中的正常链接能够正常执行。只有一个特殊链接我想添加另一个点击事件。我想我不能将此事件添加到普通的单击事件中,因为它只需在应用程序的一个特定页面中触发。在所有其他页面上,这将是不必要的代码

但是,此设置产生了错误,因为specialclass click首先被触发,然后是ajaxlink类。必须切换,只有ajaxlink返回成功时才会触发


有人对此有任何想法。

您是否尝试过对ajax请求使用完整回调?

您可以在整个过程中重构正常的单击功能,并执行以下操作:

var normalClick=function(){/*get link with ajax*/};

$('.ajax-link').click(normalClick);
$('.specialClass').click(
  function(){
    normalClick();
    /* special click code */
  }
);

谢谢,我认为这个解决方案会很有效。这样,在ajax完成后,我可以做更多的事情,我会尝试一下。我对此有疑问。使用此方法,如果链接同时具有ajax链接类和spcialclass,则normalclick事件将触发两次?我添加了event.stopImmediatePropagation();这是一个特别的班级,现在很好,谢谢!
var normalClick=function(){/*get link with ajax*/};

$('.ajax-link').click(normalClick);
$('.specialClass').click(
  function(){
    normalClick();
    /* special click code */
  }
);