0

こんにちは、非表示のコメント ID 固有のテキスト領域を表示するためのコードを考え出そうとしています。

ページの読み込み時に各コメントにテキスト領域を割り当てることができ、クリックすると表示と非表示を切り替えることができました。しかし、それらを再び非表示にする方法がわかりません。これは私がこれまでに思いついたものです:

$('#show-reply-comment').each(function(){
    $(this).click(function(e){
        e.preventDefault();
        var commentid = $(this).data('commentid');
        $('#'+commentid+'').show();
        $(this).unbind('click');
        $(this).attr('id', 'hide-reply-comment');
    });
});

$('#hide-reply-comment').each(function(){
    $(this).click(function(e){
        e.preventDefault();
        var commentid = $(this).data('commentid');
        $('#'+commentid+'').hide();
        $(this).unbind('click');
        $(this).attr('id', 'show-reply-comment');
    });
});

ユーザーは、複数のコメント返信テキストエリアを同時に開くことができる必要があります。誰かが続ける方法についてのヒントを教えていただければ幸いです。

編集: return false; を忘れました。しかし、私はコードを台無しにしたくありません

4

3 に答える 3

3

jQuery#idセレクターは、最初に一致した要素のみを返します。

セレクターを使用.classして、一致したすべての要素を返す必要があります。

于 2012-10-17T11:20:15.127 に答える
1

要素の ID を変更して、イベント ハンドラーを繰り返しバインドおよびバインド解除する代わりに、コード全体を単純に次のように置き換えることができます。

$('.show-hide-reply-comment').click(function(){
   var commentid = $(this).data('commentid');
   $('#'+commentid).toggle();
});

Id は 1 つの要素にしか指定できないため、ボタンの Id の使用を "show-hide-reply-comment" クラスの使用に置き換えたことに注意してください。

于 2012-10-17T11:22:22.223 に答える
1

前述のように、#id は一意でなければなりません。しかし、それはjqueryに関連するだけでなく、javascriptにも関連しています。css のみが一意の ID セレクターを気にしません。もちろん、これは有効ではありません...

于 2012-10-17T11:30:46.533 に答える