2

我有一个td包含一个textarea和一个按钮的表,我想通过 AJAX 在按钮单击时发送 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();返回未定义,那么我该如何解决这个问题?

4

2 回答 2

6

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

text = $("textarea", $(this).parent()).val();
于 2012-07-16T01:04:13.063 回答
1

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

于 2012-07-16T01:01:01.163 回答