0

CakePHPのAjaxリンクにjQueryイベントを追加するには、次の方法を使用しました。

<?php echo $this->Js->link(TITLE, array('controller' => 'CONTROLLER', 'action' => 'ACTION'), array('update' => '#DIV_ID', 'class' => 'FixAjaxReload') ); ?>

これはHTMLリンクと次のJQueryになります

jQuery('a.FixAjaxReload').on('click', FUNCTION);

一方、リンクにイベントを追加する必要があります。

(function(){jQuery("body").on('click', 'a.FixAjaxReload', function(event){
        var linkTo = jQuery(this).attr('href');
        if (navigator.appName.indexOf("Internet Explorer") > 0) {
            window.location.hash = '!' + linkTo.replace(window.baseUrl, '/');
        } else {
            window.history.pushState('', linkTo, linkTo);
        }
});})();
  • リンクはajax呼び出しによってロードされる可能性があるため、2番目のイベントでセレクター構文を使用しました
  • 最初のイベントで他の構文を使用しました(つまり、CakePHPの方法を変更しませんでした)。これを実行すると、イベントが複数回呼び出されるためです(以前のAjax呼び出しの数)。

しかし、それらが一緒に機能しない方法

何か案は???

前もって感謝します

4

2 に答える 2

1

私の経験では、CakePHP にバンドルされている Javascript ヘルパーの基本的な要件を超えているため、ヘルパーの使用を完全に削除し、JavaScript を手動で実装することをお勧めします。フレームワーク JS ヘルパーによって生成されるコードは複雑ではなく、簡単に再現および拡張できます。

あなたのコード例を見ると、Javascript と jQuery を十分に理解しているように見えるので、これが最適なオプションです。

于 2012-08-07T22:29:32.687 に答える
0

ご協力ありがとうございました

次のようにCake Engineを編集する解決策を見つけました.JQueryEngineHelperファイルで->イベント関数を「return false;」に置き換えました。「event.preventDefault();」で 問題は、思ったように 2 つの構文の競合ではなく、"return false;" でした。次のスクリプトの実行を妨げるステートメント

再度、感謝します

于 2012-08-09T11:13:00.063 に答える