7

私は関連する質問のかなりの数を見ました、そして私は関連しているように思われるいくつかだけを見たのでこれを完全に異なって尋ねているに違いありません。JQuery Ajax呼び出しを介して中間div全体をロードしていますが、DOMがロードされているときに$(document).readyのような新しい領域で自動JQueryを実行できるようにしたいだけです。livequeryがこれを行うことを読みましたが、それに組み込まれる方法があると思いました。最初に入力フィールドに日付ピッカーを追加しようとしています。

これは、特定のセクションをプルするバックエンドのコンテンツを呼び出すコンテンツです。

$.post("ReportingWizard",$("#wizard_form").serialize(), function (data) { setData(data); });

function setData(data) {
divElement.innerHTML = data;
$(activeTab).fadeIn(); //Fade in the active content
$(".wizardBody").fadeIn();
}

そのdivElementに配置されているファイル内には、その中のhtmlを変更するために実行する必要があるJQueryメソッドがあります。

4

2 に答える 2

8

AJAX関数のコールバックにイベントを登録します。

中央のdiv.load()をロードするために使用している場合は、jQueryコードをコールバックに直接配置します。

$('#middleDiv').load('/fish.php', function () {
    $('#someDiv').fadeIn(300); // ? whatever
});

他のAJAX関数のいくつかを使用している場合は、コールバックでDOMに要素を追加する行の後にjQueryコードを配置します。

jQuery.get('/fish.php', function (response) {
    $('#middleDiv').html(response);

    $('#someDiv').fadeIn(300); // ? whatever
});

バインドするイベントの場合は、を使用することを検討してください。on()(または。delegate()または.live()、この質問が最初に作成されたときに使用されていた古いバージョンのjQueryを使用している場合)。これらのさまざまな方法の比較をここで見ることができます。

これらのメソッドを使用すると、DOMにまだ存在していない場合でも、イベントを要素にバインドできます。$(document).ready()つまり、要素がまだDOMに登録されていなくても、ブロック内のイベントをバインドできます。

于 2010-07-27T22:28:21.903 に答える
4

クレイグ、

あなたはこれを難しい方法でやろうとしていると思います。

まず、技術的には、JavaScript / jqueryを使用して応答をページに挿入する前に操作できますが、追加された直後にこれを行うのは非常に簡単です(ドキュメントの準備ができているため)。

第二に、日付ピッカーのようなものを追加した場合、その方法がどれほど効果的かはわかりません。すべてがページに表示される前に、要素に日付ピッカーを追加することはできないと思います(推測です)。これらのjQueryUIウィジェットは、バックグラウンドで多くのことが行われています。

マットのアドバイスに従うことをお勧めします。

$ .postを呼び出す場合、コールバック関数は$(document).ready関数と同じです。応答が利用可能になるとすぐに呼び出されるため、次のようなことができます。

$.post(url, data, function(response) {
    $("#some_element").append(response);
    // Now your element has been injected you can do whatever u like here
    // call some function etc.
});

これが最善の方法です。$(document).readyと同じように、データがページに挿入されるとすぐに操作が行われます。

自分が行っていることに多少の遅れがあり、ユーザーに見せたくない場合は、表示を非表示に設定し、操作が完了したらフェードインまたは表示します。

于 2010-07-28T05:44:16.807 に答える