Jquery树遍历不起作用

时间:2012-01-12 16:48:03

标签: jquery

我有一个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 个答案:

答案 0 :(得分:2)

find()children()都会在DOM树中查找比当前更低的元素 - 您要查找的元素都更高。试试这个:

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

Fiddle to prove it works

答案 1 :(得分: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

});