0

jQuery load() 関数を使用して、セカンダリ ASPX ページのコンテンツをプライマリ ASPX ページの DIV に取り込みます。問題のコンテンツには、ボタン コントロールとラベル コントロールが含まれており、ボタンのクリック イベント コード (セカンダリ ページのコード ビハインドに存在) があり、その後、ラベル コントロールにテキストが入力されます。セカンダリ ページは、単独で正常に動作します。

プライマリ ページで、load() 関数を使用すると、ボタンとラベルが DIV に適切に配置されます。私が理解しようとしているのは、ロードされたコンテンツのスコープがどこにあるかです。これは現在、プライマリ ページの DOM に常駐しています。これは、プライマリ ページの制御下にあることを示唆しています (それが正しい言葉である場合)。ただし、ボタンをクリックすると、セカンダリ ページが「引き継がれ」、ラベルにテキストが適切に入力されたセカンダリ ページに更新されます。この結果は、ページ スコープに関して、特にロードされたボタン コントロールとそれに関連するクリック イベントに関して、ある種のハイブリッド階層があることを示唆しています。

この関係を定義する明確なルールまたは定義はありますか? load() されたコンテンツを含むページをコーディングするという観点から理解することは明らかに重要です。

皆さんありがとう。

4

1 に答える 1

2

jQuery.load()関数はコードではなく HTML を返し、HTML は DIV に挿入されるため、HTML はプライマリ ページの一部になりました。セカンダリ ページのボタン クリック コードはプライマリ ページに転送されないため、次のように jQuery でクリック イベント ハンドラを接続する必要があります。

$('#TheButtonID').live('click', function () {
     // Your code here for handling a button click

});

また

$('#TheButtonID').on('click', function() {
    // Your code here for handling a button click
});

注: .on()jQuery の以降のバージョンで使用することをお勧めしますが、 .live()jQuery 1.9.x まで削除されませんでした


jQuery 関数から ASP.NET AJAX ページ メソッドを呼び出すことは可能ですが.ajax()、ASP.NET AJAX ページ メソッドは静的でなければならないため、セカンダリ .aspx ページで既存のクリック イベント ハンドラー コードを実行することはできません。ページ インスタンスが存在しないため、ページ境界を越えてコードを呼び出すことができます。これは、スクリプトによって呼び出される静的メソッドにロジックの一部を複製する必要がある場合に、より適切なソリューションになる可能性がありますが、ページ インスタンスが存在しないため、どのページ コントロールとも対話できないことに注意してください。

于 2013-11-13T20:36:46.070 に答える