2016-08-23 5 views
-1

Я печатаю ниже фрагмент HTML в цикле.Использование parent() для получения значений в jQuery

<div class = "commentbox"> 
    <input type="hidden" name="postid" value="${p.postid}" /> 
    <input type="hidden" name="username" value="${username}" /> 
     <input type="hidden" name="source" value="user_home" /> 
    <textarea name="comment" cols="40" rows="1" class="add_comment" 
     placeholder="Add a comment..."></textarea> 
    <div class="post_con"> 
     <button type="submit" class="postcomment">Post</button> 
    </div> 
</div> 

У меня есть этот JQuery кусок, где я хотел бы получить значение <input name="postid"> при нажатии на <button class="postcomment">.

$(".postcomment").click(function(){ 
    var parent = $(this).parent(); 
    var postid = parent.find(".postid").val(); 
    console.log(postid); 
}); 

Однако, он регистрирует undefined. Как я могу получить значение postid?

+0

Я не вижу postid класс. Вы имеете в виду reviewid? – Evus

+0

@ Евус эй! Сделал ошибку. Проверьте это снова. – ProgramAllDay

+0

Я знаю, что это ответ, но ваш jq работал бы, если бы вы активировали еще одного родителя ... 'var parent = $ (this) .parent(). Parent();' 'postcomment' находится внутри div (parent1), то это находится внутри другого div - 'commentbox' (parent2). - Вы пытались 'find()' в 'post_con' div ...' closeest() 'лучше в любом случае :) – Scott

ответ

3

Вы можете использовать .closest() пройти до commentbox элемента, который является общим предком как элемент postcomment и postid элементов.

Тогда, как вы указали postid в name атрибут, вы можете использовать Attribute value selector.

$(".postcomment").click(function() { 
    var parent = $(this).closest('.commentbox'); 
    var postid = parent.find("[name=postid]").val(); 
    console.log(postid); 
}); 
+0

Вау! Это было просто. Спасибо за быструю помощь – ProgramAllDay

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

  • Нет связанных вопросов^_^