2

私のウェブサイトには、ログイン/ログアウト ボタン、アカウント ボタン、メッセージ ボタンがある「コマンド センター」バーがあります。ユーザーがログインしていない場合、コマンド センターにはログイン ボタンのみが表示されます。ユーザーがログインしている場合、コマンド センターにはログアウト、マイ アカウント、およびメッセージ ボタンが表示されます。

jQuery AJAX を使用して、ユーザーがログインまたはログアウトしたときにコマンド センターを更新します。そのため、ユーザーがログインすると、そのユーザーの情報が php ページに投稿され、コールバック関数によってコマンド センターが更新されます。別のjQuery AJAX関数があり、ログアウトボタンのクリックを感知すると(ユーザーがログインした後にのみ表示されます)、ユーザーをログアウトさせるphpページに投稿します。

ログアウト ボタンは AJAX 経由で読み込まれ、ログアウト機能は最初のページのダウンロード時に読み込まれるため、機能がログアウト ボタンの ID を参照している場合でも、ログアウト機能はログアウト ボタンのクリックに応答しません。

ログアウト機能に AJAX がロードされたログアウト ボタンを認識させる最善の方法は何ですか? 私の最初の考えは、コマンド センター div でマウスオーバー イベントを使用してログアウト機能をカプセル化し、ユーザーがログインして AJAX がロードされたコマンド センター上にカーソルを移動した後、関数がに基づいてログアウト DIV ID を検索することです。現在の HTML。欠点は、ログアウトするつもりがなくても、ユーザーがコマンド センターにカーソルを合わせるたびに関数が呼び出されることです。

これに対するより簡単な解決策はありますか?

4

2 に答える 2

3

あなたがしたいことは、jQueryのon()機能を使用することです。

コードは次のようになります。

$('body').on('click', '#log-out-button-id', function(){
    // logout code
});

基本的に、変更されないページ上の要素にイベントを添付します。パフォーマンス上の理由から、可能な限り最も近い安定した親要素を使用する必要があります。(あなたの場合、それはおそらく'#command-center'.

于 2013-03-14T15:29:15.597 に答える
2

ログアウトボタンをセレクターとして渡して、jQuery.on関数を(より厳密にはコマンドセンターで)使用できます。bodyこのようにして、そのボタンが存在するときはいつでも実行されます-それがすでに存在していたか、将来追加されたかに関係なく:

$("body").on("click", "#logout", function(event){
    // Your code
});
于 2013-03-14T15:29:32.590 に答える