2012-01-13 6 views
0

.singleAnswerを選択しようとしていますが、動作していません。Jquery canw traverse elements

の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

+0

@ Loktarはい、編集された元の質問 – kirby

+1

最後の4つの質問のうち3つは、ツリーを横断できないというバリエーションです。 [ドキュメントオブジェクトモデル](https://developer.mozilla.org/en/DOM)と[jQueryトラバーサルメソッド](http://api.jquery.com/category/traversing /) – Dennis

答えて

2

.closest() method検索本当にあなたが.answerBar要素の兄弟を探しているように見えるDOMを通じてアップ、または、 .answerContainer要素の子です。

はこれを試してみてください:

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

これは、そこからクラス.singleAnswerと子孫(複数可)を見つけ、thisから最も近い.answerContainer要素にDOMを通って上に行くことを意味します。

0

現在の要素から検索を開始する最も近い兄弟を探しています。

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