2014-09-07 4 views
0

У меня есть группа divs, принадлежащих классу userPosts, и я динамически создаю отдельный идентификатор для каждого элемента. Элемент, который я хочу оживить, имеет тот же идентификатор, что и кнопка, нажатая для выполнения анимации. Я хочу получить «ID» всех элементов $ («textarea») с тем же идентификатором, что и нажатая кнопка, и анимировать текстовое поле с соответствующим идентификатором.Получить идентификатор элемента класса

@foreach(var post in posts){ 
     <div id="@post.ID"class="userPosts"> 
      <button class="view"id="@post.ID">View Post!!!</button><br> 
      <h3><strong>Name</strong></h3><br> 
      <h5>@post.FirstName</h5><br /> 
      <h5>@post.LastName</h5><br /> 
      <h3><strong>Subject</strong></h3><br> 
      <h5>@post.Subject</h5><br><br> 
      <br><br> 
      <textarea id=""rows="4" cols="40">@post.Comments</textarea> 
      </div><br><br> 

      } 

Это не работает, но это то, что я придумал

$(".view").on("click", function() 
{ 

    var selected = $(this).attr("id") 
    stop().animate(selected, { height: '800px' }, 1000); 
    stop().show(selected,"textarea"); 
    // $(".userPosts").stop().animate({ height: '800px' }, 1000); 
    //$(".userPosts textarea").stop().show(); 
}); 
+3

Идентификатор должен быть уникальным. Используйте данные вместо этого (в вашем случае) ... –

+0

Я все еще не понимаю. Я думаю, что моя проблема - синтаксис. Я получил идентификатор кнопки, но я не знаю, как выбрать текстовое поле с тем же идентификатором. – chrisp54

+0

C- Ссылка правильная. У вашего div и кнопки не может быть 'id =" @ post.ID ". Все должны быть уникальными. – Cory

ответ

1

Во-первых, вам не нужно иды здесь - просто использовать классы: ниже код выбирает родительский DIV (divCont) нажатой кнопки .view, затем использует .find(), чтобы выбрать текстовое поле с классом .commentsBox. предупреждение там просто, чтобы показать, что правильный ящик был выбран

см jsfiddle для рабочего примера:

$(".view").on("click", function() { 
    var divCont = $(this).closest("div") 
    var txtBox = divCont.find(".commentsBox") 
    alert(txtBox.val()) 

}); 

после того как вы выбрали правильное текстовое поле и дать ему УАК txtBox, вы можете делать все, вы хотите его (например, показать, оживить, заполнить его - независимо)

помните, что это находит следующий элемент с классом .commentsBox в DIV. Если у вас есть несколько элементов .commentsBox, вам нужно будет использовать .eq (0), чтобы выбрать правильный, основанный на индексе

+0

Спасибо, что работает – chrisp54

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