2012-01-12 5 views
3

jquery変数がありません。要素を適切に選択する方法がわからないため、最も似ています。Jqueryツリーのトラバースが機能しない

$('.upVote').click(function(e){ 
    e.preventDefault(); 
    var ratebox = $(this).find('.ratingBox'); //this variable isnt working 
    var answer_id = $(this).children('.record_id').attr('value'); //this one too 

HTML::

<p class='ratingBox'> $answerrating[$f]</p> 
<div class='answerBar'>"; 
    <a href='#' class='upVote vote'>Upvote</a> 
    &middot; 
    <a href='#' class='downVote vote'>Downvote</a> 
    <a class='answerTime'> $difference $periods[$j] ago</a> 
</div> 
<input type='hidden' name='record_id' value='$answerid[$f]' class='record_id' /> 

答えて

2

find()children()どちらがよりDOMツリーの下位要素を探しますjQueryの私は、以下のセレクタが働くだろうと思ったが、彼らはない

現在 - あなたが探している要素はどちらも高いです。これを試してみてください:

var ratebox = $(this).closest('.answerBar').prev(".ratingBox"); 
var answer_id = $(this).closest('.answerBar').next('.record_id').attr('value'); 

Fiddle to prove it works

+0

ありがとうございます。これが解決策です!私はすぐにそれを受け入れるだろう。 – kirby

0

使用しparentprevnextを利用する必要があります。 findchildrenは、マークアップごとに機能しない要素を調べます。試してみてください

$('.upVote').click(function(e){ 

    e.preventDefault(); 
    var ratebox = $(this).parent().prev('.ratingBox'); //this will work now 
    var answer_id = $(this).parent().next('.record_id').attr('value'); //this too 

}); 
+0

ありがとうが、それは仕事をしなかった。なぜ次の仕事があるのか​​分かりません。次の要素を手に入れてください。またはセレクタ内の次の要素ですか? – kirby

+0

なぜこれは機能しませんでしたか?マークアップごとに動作します。 – ShankarSangoli

関連する問題