jQuery Selection&过滤问题

时间:2011-01-27 22:23:33

标签: jquery jquery-selectors

问候,

我正在尝试使用jQuery在一串父帖子中为评论UL添加新评论。我似乎无法弄清楚如何附加到父帖子的评论UL,这里是HTML -

<div class="statusUpdate-DIV">
        <div class="statusUpdate-middle">
            <span class="statusUpdate-timestamp"><?php echo date("M d, y g:i a", strtotime($row['timestamp']));?></span>
            <span class="statusUpdate-title"><?php echo $row['title'];?></span>
            <?php echo $row['body'];?>
            <div class="commentsDIV" id="status<?php echo $row['id'];?>">
                <ul class="commentsBlock">
                    <li><strong>This is a comment</strong> comment here</li>
                </ul>
            </div>
            <div class="postCommentDIV">
                <span class="commentHeader">Comment</span>
                <form name="commentForm" class="postCommentFORM" method="post" action="">
                    <textarea rows="3" cols="63" class="commentBody" name="commentBody"></textarea>
                    <input type="submit" value="Post"/>
                </form>
            </div>
        </div>
    </div>

我正在尝试将commentBody(表单textarea)的值附加到commentsBlock(UL)。我能够使用以下脚本检索commentBody的值,问题是将其附加到之前的commentsBlock UL:

    //This is just a test to make sure the value of .commentBody is being retrieved
$(".postCommentDIV form").submit(function() {
                    var comment = $(this).find(".commentBody").val();
                    alert(comment);
                    return false;
            });

谢谢..

4 个答案:

答案 0 :(得分:2)

您只需要在当前警报的位置添加:

// Create the <li> containing the comment
var commentLi = $("<li>").text(comment);
// Travel up DOM tree to the closest statusUpdate-DIV, then back down to append
$(this).closest("statusUpdate-DIV").find(".commentsBlock").append(commentLi);

jQuery的.text()将自动转义评论中的任何HTML。

答案 1 :(得分:1)

$(this).closest('.statusUpdate-middle').find('.commentsBlock').append(comment);

答案 2 :(得分:1)

我认为你应该这样做:

    $(".postCommentDIV form").submit(function() {
              var comment = $(this).find(".commentBody").val();
              $('<li>').text(comment).appendTo('.commentsDIV .commentsBlock');
              return false;
    });

注意使用类来解决性能问题,最好使用id来标识一个唯一的块,作为包含注释的内容,这样你就可以做.appendTo('#commentsBlock')。

答案 3 :(得分:0)

尝试:

$(".postCommentDIV form").submit(function() {
var comment = $(this).find(".commentBody").val();
$(this).find(".commentsBlock").append("<ul><strong>" + comment + "</strong></ul>");
return false;
});