0

谢谢阅读。

我有一个评论列表。用户点击回复链接,就会出现一个表格。然后用 jquery 我用取消更改回复链接。当您单击取消时,它会隐藏表单,但是当您再次单击时,它会显示并隐藏。

http://jsfiddle.net/Zv3uy/10/这是我的代码的操作。

这种方法对吗?我正在尝试学习。

这是代码。

JavaScript

$(function(){
    $('.reply-comment').on('click', function(e){
        var CommentID = $(this).attr('id');
        e.preventDefault();

        $(this).next('.reply-form').show(function(){
            $('#'+CommentID).html('<a href="" class="reply-comment" id="reply-comment-'+CommentID+'"> Cancel </a>');

            $('.reply-comment').on('click', function(e){
                e.preventDefault();

                $(this).next('.reply-form').hide(function(){
                    $('#'+CommentID).html('<a href="" class="reply-comment" id="reply-comment-'+CommentID+'"> Reply </a>');
                });
            });

        });
    });
});

HTML

<div>comments text etc etc...</div>
<a href="" class="reply-comment" id="2"> Reply </a>
<div class="reply-form well">
    <form name="reply-form" id="reply-form" method="POST">
        <textarea name="Comment" rows="6" class="span10"></textarea> <br /><br />
        <input type="submit" class="btn btn-primary replycommentsubmitbutton" value="Reply" />
    </form>
</div> 
4

2 回答 2

3

每次单击时,您都会将另一个单击事件绑定到链接。

我会这样做:

$(function () {
    $('.reply-comment').on('click', function (e) {
        e.preventDefault();
        var $form = $(this).next('.reply-form');
        var CommentID = $(this).attr('id');

        if ($form.is(':visible')) {
            // hide it
            $form.hide(function () {
                $('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '"> Reply </a>');
            });
        } else {
            // show it
            $form.show(function () {
                $('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '"> Cancel </a>');
            });
        }
    });
});

这样你就只有一个click而且它更整洁(更整洁?)。

http://jsfiddle.net/Zv3uy/12/

于 2013-09-20T10:28:40.887 回答
0

您应该在绑定新事件之前取消绑定旧事件

$('.reply-comment').off('click').on('click', function(e){
于 2013-09-20T10:25:01.913 回答