jQuery UI ダイアログ内の ASP.NET ボタン クリック イベントのトラブルシューティング
この記事では、jQuery UI ダイアログ内の ASP.NET ボタンがサーバー側のクリック イベント ハンドラーをトリガーできないという一般的な問題に対処します。 ダイアログの div をフォームに移動しても問題は解決しません。
問題を理解する
根本的な原因は、多くの場合、jQuery コード内のクロージャーの問題です。 jQuery("#dialog").dialog({...})
を使用してダイアログを作成すると、ダイアログを表す jQuery オブジェクトがクロージャー内にトラップされます。 jQuery("#dialog").parent().appendTo(jQuery("form:first"))
など、後でダイアログを操作しようとすると、正しいオブジェクトが参照されていないため失敗します。
解決策: 適切なオブジェクト参照
この解決策には、クロージャのスコープ外の変数に jQuery ダイアログ オブジェクトを格納することが含まれます。これにより、ダイアログの作成後も継続的にアクセスして操作できるようになります。 修正されたコードは次のとおりです:
<code class="language-javascript">jQuery(function() { var dlg = jQuery("#dialog").dialog({ draggable: true, resizable: true, show: 'Transfer', hide: 'Transfer', width: 320, autoOpen: false, minHeight: 10, minWidth: 10, }); dlg.parent().appendTo(jQuery("form:first")); });</code>
jQuery オブジェクトを dlg
変数に割り当てることで、ポストバック機能に重要な操作を含むダイアログ要素に対する後続の操作が正しくダイアログをターゲットにし、サーバー側のボタン クリック イベント ハンドラーが期待どおりに機能できるようになります。
以上がjQuery UI ダイアログで ASP.NET ボタンのクリック イベントが発生しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。