2012-01-07 5 views
0

Я исследовал jQuery ближайший(), 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/

ответ

0

Ваш невидимый ДИВ:

<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 ... Или, если вы не хотите делать это, выберите только скрытые элементы одного и того же класса: 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

спасибо за это решение. Больше всего беспокоиться об использовании этого, хотя, если я закончил тем, что скрыл div до «post_comments». Я должен был быть более ясным, но я многому научился от этого ответа, спасибо! – yoshyosh

+0

@yoshyosh - мое удовольствие - удачи! –

Смежные вопросы