2012-01-07 8 views
0

jQuery closest()、next()、nextAll()を調べましたが、祖先/兄弟/子供をターゲットにしていないため、スパン内にあるリンクをクリックした後、最も近い隠しdivを選択する方法を理解できませんでした。このコードで動作しますが、ひどいにおいがします。これを書く正しい方法は何ですか?私のコメントの追加リンクの下に隠されている "post_comments"クラスを選ぶにはどうすればいいですか?ここでjQueryクラスセレクタでクローズド隠しdivを明らかにする方法

私のコードです:

<div class="skittles"> 
<span> 
    <a href="#" class="comment_count">Add Comment</a> 
</span> 
<span>3 days ago</span> 
</div> 

<div class="post_comments hidden"> 
<input class="comment_input" type="text" placeholder="enter your comment" data-type="post" /> 
</div> 

jQueryの

$(function(){ 
     $(".comment_count").click(function(e){ 
      var $test = $(this).parent().parent().next(); 
      $test.show(); 
      e.preventDefault(); 
     }); 

    }); 

作業のjfiddle醜いコード http://jsfiddle.net/N5a2v/9/

答えて

1
$(function(){ 
    $(".comment_count").click(function(e){ 
     $(this).parents("div.skittles").next("div.post_comments").show();   
     e.preventDefault(); 
    }); 

}); 

http://jsfiddle.net/N5a2v/13/

0

へのリンクをあなたの目に見えないのdiv:

<div class="post_comments" style="display:none"> 
<input class="comment_input" type="text" placeholder="enter your comment" data-type="post" /> 
</div> 
jQueryので

$(function(){ 
    $(".comment_count").click(function(e){   
     $(".post_comments").show(); 
     e.preventDefault(); 
    }); 

}); 
+0

申し訳ありません。このソリューションが私のアプリにとってうまくいかない理由は、同じ ".post_comments"クラスを持つ他の多くのフィールドがあるためです。私は最も近いものだけを明らかにする必要があります。 – yoshyosh

+0

これはidの概念がIDを与えてID名から選択する場合です...または、同じクラスの隠れ要素だけを選択したい場合は:hidden " –

1

:hidden pseudoselectorは何をしたいそうです。

最初の非表示のdivをページに表示しますか?

$(".comment_count").click(function(e){ 
    var $test = $("div:hidden:first"); 
    $test.show(); 
    e.preventDefault(); 
}); 

UPDATED FIDDLE


それとも最初の隠されたpost_commentsのdiv?

$(".comment_count").click(function(e){ 
    var $test = $("div.post_comments:hidden:first"); 
    $test.show(); 
    e.preventDefault(); 
}); 

UPDATED FIDDLE

+0

このソリューションに感謝します。これを使って最大の心配ですが、もし私が "post_comments"の前に隠れたdivを持ってしまったら、私はもっと明確にすべきでしたが、この答えからたくさんのことを学んだよ、ありがとう! – yoshyosh

+0

@yoshyosh - 私の喜び - –

0
$(function(){ 
    $(".comment_count").click(function(e){ 
     $(this).closest('.skittles').next().show(); 
     e.preventDefault(); 
    }); 

}); 

フィドル:私はより明確にされている必要がありますhttp://jsfiddle.net/N5a2v/18/

関連する問題