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を介してページを取得します。ある特定の私は1つの複数のページを持っているので、すべてのページに対して同じリンクを生成する同じ機能を持っています。

今、私の問題は、1つのページのリンクの1つだけにあり、別のことをしたいと思っています。ajaxページがsuccessfullを返すと、別の関数を起動する必要があります。今、私はこのようなコードを持っています。

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

この設定は、同じコンテナ内にある通常のリンクを通常どおりに実行するためです。別のクリックイベントを追加したい特別なリンクを1つだけ。このイベントは、アプリケーションの特定の1ページでのみ発生する必要があるため、通常のクリックイベントに追加することはできないと思います。他のすべてのページでは、不要なコードになります。

ただし、この設定ではエラーが発生しました。これは、specialclassクリックが最初に発生し、その後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 に答える