jquery显示/隐藏评论回复

时间:2012-10-17 11:18:21

标签: jquery

您好我试图提出用于显示隐藏comment-id特定textareas的代码。

我已经成功地为页面加载时的每个评论分配了一个文本区域,然后在点击时隐藏和显示。但我不知道如何再次隐藏它们。这是我到目前为止所提出的:

$('#show-reply-comment').each(function(){
    $(this).click(function(e){
        e.preventDefault();
        var commentid = $(this).data('commentid');
        $('#'+commentid+'').show();
        $(this).unbind('click');
        $(this).attr('id', 'hide-reply-comment');
    });
});

$('#hide-reply-comment').each(function(){
    $(this).click(function(e){
        e.preventDefault();
        var commentid = $(this).data('commentid');
        $('#'+commentid+'').hide();
        $(this).unbind('click');
        $(this).attr('id', 'show-reply-comment');
    });
});

用户应该能够同时打开多个评论 - 回复文本。如果有人能给我一个如何继续的提示,我将不胜感激。

编辑:我忘记了返回虚假;但我不想弄乱代码

3 个答案:

答案 0 :(得分:3)

jQuery #id选择器只返回第一个匹配的元素。

您应该使用.class选择器返回所有匹配的元素。

答案 1 :(得分:1)

您可以简单地用

替换整个代码,而不是尝试更改元素的ID并重复绑定和取消绑定事件处理程序。
$('.show-hide-reply-comment').click(function(){
   var commentid = $(this).data('commentid');
   $('#'+commentid).toggle();
});

请注意,我通过使用“show-hide-reply-comment”类替换了对您的按钮使用Id,因为Id只能被赋予一个元素。

答案 2 :(得分:1)

如前所述,#id必须是唯一的。但它不仅相对于jquery,它相对于javascript。只有css不关心唯一ID选择器。这当然不会使它有效......