2012-07-16 78 views
1

我有一个表td其中包含一个textarea和一个按钮,我想通过AJAX发送按钮点击时的textarea值,但是在按钮上选择最接近的textarea时出现问题。选择离按钮最近的textarea

的JavaScript

$(document).ready(function() { 
    $(document).on("click", ".addR", function() { 
     paperID = $(this).attr("paperID"); 
     commentID = $(this).attr("commentID"); 
     text = $(this).closest("textarea").val(); 
     $.ajax({ 
      data: { 
       paperID: paperID, 
       commentID: commentID, 
       text: text 
      }, 
      type: 'POST', 
      url: 'add_rebuttal.php', 
      success: function (response) { 
       alert(response); 
       window.location.href = window.location.href; 
      } 
     }); 
    }); 
}); 

PHP:

while ($row = mysql_fetch_assoc($comments)) { 
    echo "<tr><td>{$row['text']}</td>"; 
?> 
    <td><br /><textarea class="reText" rows='5' name='reText' id='reText' style='width:98%;' type='text'></textarea> 
    <button commentID="<?php echo $row['comment_id'] ?>" paperID="<?php echo $paper_id ?>" class="addR" type="button" name="addR" id="addR">send rebuttal</button></td></tr> <? 
} 

问题是$(this).closest("textarea").val();回报不确定的,所以我怎么能解决这个问题?

回答

5

closest()返回最接近的祖先。你的textarea不是你的按钮的祖先,它是以前的兄弟姐妹。相反,尝试:

text = $("textarea", $(this).parent()).val(); 
+0

的一个完美工作,谢谢。 – 2012-07-16 01:05:57

1

要获得文本区域的文本,您必须使用text()而不是val()。正如Scotty所指出的,你想要的textarea不是祖先,所以不要使用closest()

+0

同样的问题,这是第一个textarea的值取不对应按钮 – 2012-07-16 01:04:25