0

'comment' フィールドには 'id' と 'class' があります。一意の 'id' はデータベース (動的出力) からのものであるため、指定できません。Jquery で「トグル」(非表示と表示) を試みましたが、特定の「コメント」フィールドをクリックすると、すべてのフォーム (テキストエリア) が表示されます (トグル)。特定のフィールドを同じ ID またはクラスで切り替えるにはどうすればよいですか?

$(".commentForm").hide();
    $(".askForComment").click(function(){
    $(".commentForm").toggle();
});
<div id='comments'>
   <div id='askForComment' class='askForComment'>Comments?</div>
   <div id='viewComments'></div>
   <form id='commentForm' class='commentForm'>
        <textarea cols='20' rows='2'></textarea>
        <input type='button'>
   </form>
</div><!-- this element is looped (dynamic) -->

私がクリックした画像

フォームが切り替わる画像

4

3 に答える 3

3

ここで特定のものをターゲットにする必要があり.commentFormます:

 $(".askForComment").click(function(){
    $(this).siblings(".commentForm").toggle();
 });

これにより、 の.commentForm近くにあるが切り替わりますaskForComment。または、これを行うことができます:

 $(".askForComment").click(function(){
    $(this).parent().find(".commentForm").toggle();
 });

お役に立てれば!

于 2013-07-25T17:20:57.360 に答える
2

これを変える:

$(".askForComment").click(function(){
    $(".commentForm").toggle();
});

これに:

$("#comments").on('click', ".askForComment", function(){
    $(this).next(".commentForm").toggle();
});

.siblings()一致するすべての兄弟を取得するため、使用したくありません。.next()最も近いものだけを取得するため、使用したいと考えています。

于 2013-07-25T17:21:23.283 に答える
2

これを試して

$(".askForComment").on("click",function(){
    $(this).next(".commentForm").toggle();
 });

click実行時に形成されたHTMLがロード後DOMに使用することを好む場合よりも、これが最良のオプションであるため$(".askForComment").on("click",function(){

于 2013-07-25T17:27:09.430 に答える