Jquery получить идентификатор выбранного элемента и показать скрытый дочерний элемент

0

У меня есть массив комментариев, и у него должно быть возможным ответить на комментарий.

<div>
<a href="#" class="answerBtn" id="<?=$comment->id ?>">Answer</a>
    <div id="answerDiv" style="display:none;">
        <form action="" method="POST">
            <input type="hidden" value="<?=$comment->id ?>"/>
                <p>
                     <label>Your name*</label>
                <br />
                     <input type="text" name="answer_username" id="answer_username" required />
                </p>
                <p>
                    <label>Your Email (optional)</label>
                <br />
                        <input type="text" name="answer_email" />  
                </p>
                <p>
                    <label>Your comment*</label>
                <br />
                <textarea name="answer_message" required></textarea>
                </p>
                <input type="hidden" value="<?=base_url()?>" id="answer_baseurl"/>
                <input type="submit" value="Send"/>                             
                </form>
                </div>

Я хочу отобразить форму при нажатии ссылки, но поскольку каждый комментарий имеет ту же форму, я должен быть конкретным, поэтому я хочу показать форму в зависимости от идентификатора комментария. поэтому я попробовал что-то вроде этого с jquery:

$('.answerBtn').click(function(){
    var id = $(this).attr('id');
    $('id + div').slideToggle();
});

но это действительно не работает...

Кто-нибудь может мне помочь?

Теги:

4 ответа

1

Поскольку отображаемый div, кажется, следующий брат, используйте .next() чтобы найти элемент

$('.answerBtn').click(function(){
    $(this).next().slideToggle();
});
  • 0
    это прекрасно работает! большое спасибо!
0

Добавьте идентификатор комментария в div также:

 <div id="answerDiv<?=$comment->id ?>" style="display:none;">

и в скрипте попробуйте

 $('.answerBtn').click(function(){
    var id = $(this).attr('id');
    $('#answerDiv'+id).slideToggle();
 });
0

Следующая строка касается только тега id:

$('id + div').slideToggle();

Он вообще не использует id переменной.

Вместо этого используйте следующее:

$('#' + id + ' + div').slideToggle();
0

Я думаю, что лучший способ состоял бы в том, чтобы определить тот же идентификатор div, который имеет форму

<a href="#" class="answerBtn" id="<?=$comment->id ?>">Answer</a>

<div id="answerDiv_<?=$comment->id ?>" style="display:none;"> ... </div>

Затем отобразите соответствующий div когда .answerBtn:

$('.answerBtn').click(function(){
    var id = $(this).attr('id');
    $('div#answerDiv_'+id).slideToggle();
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню