1

私はこれまで誰もこれをしているのを見たことがないので、私はそれをそこに捨てると思いました。

ラジオボタンのリストのそれぞれにインラインonclickイベントがあるレガシーページがあります。

onclick="handleService(document.forms.ContactForm,5,16,5,0,0);" 

このコードは、AJAX呼び出しを実行して追加のHTMLを取得し、クリックされたラジオボタンに応じて追加のフォーム要素を追加します。このhandleService関数は、動的に生成されて変更される可能性があるため、ローカルで編集またはコピーできないリモートJavascriptファイルから含まれています。

jQuery(またはその他)を使用してこのonclickイベントをキャプチャし、それから何らかの方法でコールバック関数を追加することが可能かどうか疑問に思っています。

ラジオボタンがクリックされるたびに、2つのテーブル列を同じ高さにしようとしています。フォーム要素を追加すると、列の1つがサイズが拡大/縮小します。onclickでhandleServiceを呼び出した直後に高さを修正する関数を追加しようとしましたが、追加のフォーム要素が追加される前に高さが修正されます。おそらく、高さを修正する呼び出しの前にAJAX呼び出しが終了していないためです。 (したがって、コールバックが必要です)。

更新これがajaxComplete(ajaxSucessのようなグローバル関数)への私の呼び出しです:

$('.gq_steps').ajaxComplete(function(e, xhr, settings) {
    alert('here');
    if (settings.url == 'geoquote_services.php') {
        $('#first_col').height($('#third_col').height());
    }
});

handleServiceはjQueryを使用していませんが、それは問題ではありませんよね?ajaxSucess / ajaxCompleteは、関係なくすべてのajaxリクエストを取得する必要があります。私はそれを次のコードまでずっとダミングしようとしましたが、それでも呼び出されません。

$(document).ajaxComplete(function() {
    console.log('here'); 
});

これは$(document).ready(...)呼び出しの中にあります。そうではないでしょうか?

4

1 に答える 1

0

jQuery のajaxSuccess() イベント ハンドラに興味があるようです。

そのリクエストが完了した後にコードを実行する必要があり、そこにコールバックを追加するためにその他のファイルにアクセスできないように見えるため、リスナーをバインドしてからajaxSuccess高さ修正を実行するという手間のかかるアプローチを使用できます.

次のようなもの: $('.your-columns').ajaxSuccess(function(e,xhr,settings){ // これが私たちの関数かどうかをテストし、 // 次に高さを修正します。 });

何が起こったかに関係なく、すべての Ajax 呼び出しでajaxSuccess実行されることに注意してください。HTML が戻ってきたので、それらの行に沿って特定の要素が存在するかどうかをいつでもテストできます。$(xhr.responseText)

于 2011-06-20T21:02:00.767 に答える