2012-01-13 135 views
0

我想选择.singleAnswer,但它不工作。Jquery不能遍历元素

JQUERY:

$(".answerContainer").on("click", ".editAnswer", function(e){ 
e.preventDefault(); 
answer = $(this).parent('.answerBar').closest('.singleAnswer'); //this variable doenst work 

HTML:

<div class='answerContainer'> 
<p name='singleAnswer' class='singleAnswer'>$answer[$f]</p> 
<input type='hidden' value='$answerid[$f]' class='answer_id' /> 
<p class='ratingBox'> $answerrating[$f]</p> 
<div class='answerBar'> 
<a href='#' class='upVote vote'>Upvote</a> &middot; <a href='#' class='downVote vote'>Downvote</a> &middot; 
<a class='answerTime'> $difference $periods[$j] ago</a> 
&middot; <a href='#' style='color: orange;' class='editAnswer'><b>Edit</b></a></div> 
+0

假设'.answerContainer'是'singleAnswer'的父亲? – Loktar 2012-01-13 02:18:06

+0

@Loktar是的,编辑的原始问题 – kirby 2012-01-13 02:19:09

+1

最后四个问题中有三个是关于无法遍历树的变体。它真的有助于阅读[文档对象模型](https://developer.mozilla.org/en/DOM)和[jQuery遍历方法](http://api.jquery.com/category/transing /) – Dennis 2012-01-13 02:51:28

回答

2

.closest() method搜索通过DOM,你似乎是在寻找.answerBar元素的兄弟姐妹,或者,真的, .answerContainer元素的子元素。

试试这个:

answer = $(this).closest('.answerContainer').find('.singleAnswer'); 

这意味着从this上通过DOM到最近.answerContainer元素,然后从那里找到.singleAnswer派生类(一个或多个)。

0

您正在寻找不是最近的兄弟姐妹,它会从当前元素开始搜索。

answer = $(this).parent('.answerBar').siblings('.singleAnswer');