2

ログインと登録用のコンテンツをPHPファイルに表示するための次のコードがあります。

<?php // LOGIN PART ?>
<div class="login-part"></div>

<?php // REGISTRATION PART ?>
<div class="registration-part"></div>

そしてこれは私のjsファイルにあります:

$(document).ready( function() {
            // FOR REGISTRATION
            $('span.logreg.reg').click(function () {

                $('div.registration-part').append('<p>Registration</p>');
            });

            // FOR LOGIN
            $('span.logreg.log').click(function () {

                // insert html
                $('div.login-part').append('<p>Login</p>');
            });
        });

これで、スパンをクリックするたびに、クリックされたスパンに応じて、テキストログインまたは登録が表示されます。

それは問題ありませんが、追加する必要があるのは1回だけなので、ユーザーがスパンをさらにクリックしても、テキストは追加されません。

私の知る限り、Remove()またはempty()はオプションではありません。入力ボックス内の情報(後でユーザー情報を挿入するための入力ボックスがあります)がそこにとどまり、ユーザーが誤ってクリックしても削除されないためです。再びスパンに。

ただし、別のスパンをクリックすると、div内のhtmlが削除される可能性があります。たとえば、span.logがアクティブな場合、span.logをクリックしても何も起こりませんが、span.regをクリックすると、div.login-part内のhtmlが削除され、登録テキストが表示されます。

このようなことをする方法は?

4

1 に答える 1

2

APiを試してください:お願いします:(質問を読むと、一度使用するだけでこの問題が解決する.oneようにHTMLを追加するだけでよいようです)login.one

要素のイベントにハンドラーをアタッチします。ハンドラーは、要素ごとに最大1回実行されます。

APiリンク:http ://api.jquery.com/one/

この方法では、追加は必要に応じて1回だけ行われ、重複するhtmlが複数回表示されることはありません。

これがお役に立てば幸いです。何か見落としがあったかどうかを教えてください。

さらにビット差分デモ: http: //jsfiddle.net/avSDa/9/あなたに合ったものを使用し.is(:empty)てください。

このようなコード

  $('span.logreg.log').one('click', function () {

                // insert html
                $('div.registration-part').append('<p>Login</p>');
            });
于 2012-07-01T08:49:09.253 に答える