【问题标题】:jquery show/hide comment replyjquery 显示/隐藏评论回复
【发布时间】:2012-10-17 11:18:20
【问题描述】:

您好,我正在尝试编写代码来显示隐藏评论 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');
    });
});

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

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

【问题讨论】:

    标签: jquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以简单地将整个代码替换为

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-29
          • 2018-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-22
          相关资源
          最近更新 更多