3

我正在开发一个使用 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-link').click(function(){get link with ajax});

如果用户启用了 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});

此设置是因为我希望正常执行同一容器中的正常链接。只有一个我想添加另一个点击事件的特殊链接。我想我不能将此事件添加到正常的单击事件中,因为它只需要在应用程序的一个特定页面中触发。在所有其他页面上,这将是不必要的代码。

然而,这种设置产生了错误,因为特殊类点击首先被触发,然后是 ajaxlink 类。这必须切换,只有在 ajaxlink 返回成功时才会触发。

任何人对此都有任何想法。

4

2 回答 2

3

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

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

$('.ajax-link').click(normalClick);
$('.specialClass').click(
  function(){
    normalClick();
    /* special click code */
  }
);
于 2010-03-10T14:19:56.793 回答
1

您是否尝试过对 ajax 请求使用 Complete 回调? ajaxComplete 的 Jquery 文档

于 2010-03-10T14:17:16.953 回答