0

你好我试图想出代码来显示隐藏评论 ID 特定的文本区域。

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

$('#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');
    });
});

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

编辑:我忘了 return false; 但我不想弄乱代码

4

3 回答 3

3

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

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

于 2012-10-17T11:20:15.127 回答
1

无需尝试更改元素的 id 并重复绑定和取消绑定事件处理程序,您只需将整个代码替换为

$('.show-hide-reply-comment').click(function(){
   var commentid = $(this).data('commentid');
   $('#'+commentid).toggle();
});

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

于 2012-10-17T11:22:22.223 回答
1

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

于 2012-10-17T11:30:46.533 回答