2010-07-29 4 views
1

Я пытаюсь отобразить форму ответа для каждого комментария, но я скрываю форму с помощью Jquery, и мне было интересно, как я могу захватить идентификатор комментария и добавить его в Jquery, чтобы он мог скрыть каждую форму ответа и отобразить правильную форму ответа правильно, вместо отображения неправильной формы ответа?Использование JQuery для нескольких значений?

Например, form_show_hide1, form_show_hide2, form_show_hide3, form_show_hide4 и так далее.

Я использую PHP и JQuery.

Это код JQuery.

$(function(){ 
     $('a#form_show_hide').click(function(){ 
     $('#form_container').slideToggle('slow'); 
     // prevent default action 
     return false; 
     }); 
    }); 

Это код HTML. Примечание. Я изменил идентификаторы на классы.

<a href="#" title="Reply Link" class="form_show_hide">Reply</a> 


<form method="post" action="' .htmlentities($_SERVER['REQUEST_URI']) . '" class="form_container> 
    <fieldset> 
     <textarea rows="6" cols="70"></textarea> 
     <input type="submit" name="reply" value="Submit" /> 
     <input type="hidden" name="id" value="' . urlencode($comment_id) . '" /> 
    </fieldset> 
</form> 
+1

Можете ли вы разместить разметку? Кажется, вы повторно используете идентификаторы, которые могут вызвать проблемы, лучше всего использовать класс и найти элемент, который вы хотите относительно. –

+0

код был бы большой, чтобы публиковать здесь, на SO. так как я могу использовать классы с кодом JQuery? – 5150

+0

Вам не нужно размещать несвязанный контент, код и разметку. Просто кратчайший фрагмент кода, который представляет случай и демонстрирует проблему, более чем достаточно. См. Также http://sscce.org. – BalusC

ответ

0

Вы можете сделать это путем нахождения .form_container элемента относительно используя .next() так:

$(function(){ 
    $('a.form_show_hide').click(function(){ 
    $(this).next('.form_container').slideToggle('slow'); 
    return false; 
    }); 
}); 

Там же расстояние в вашем коде, который дает мне сомнения, хотя. Если они родные братья, но не немедленные siblings используют .nextAll('.form_container:first'), а не звонок .next().

Если они не братья, но в какой-то родительского контейнера можно определить, например:

<div class="container"> 
    <div> 
    <a href="#" title="Reply Link" class="form_show_hide">Reply</a> 
    </div> 
    <form method="post" action="' .htmlentities($_SERVER['REQUEST_URI']) . '" class="form_container> 
    <fieldset> 
     <textarea rows="6" cols="70"></textarea> 
     <input type="submit" name="reply" value="Submit" /> 
     <input type="hidden" name="id" value="' . urlencode($comment_id) . '" /> 
    </fieldset> 
    </form> 
</div> 

Затем поднимитесь в этот контейнер и обратно, заменив .next() вызов с .closest('.container').find('.form_container'). .closest() просто нужен селектор, чтобы правильно идентифицировать этот родительский контейнер.

0
$("SELECT_YOUR_FORMS").each(function(index) { 
    $(this).DO_YOUR_FUNCTION(); 
    }); 
Смежные вопросы