代码之家  ›  专栏  ›  技术社区  ›  Alex Pliutau

jquery javascript在.html()中的奇怪行为

  •  0
  • Alex Pliutau  · 技术社区  · 14 年前


    我有下一个简单的html: <td id="comment_td"> </td> . td中有两个空格。我像这样检查td html:

    if (!$('#comment_td').html()) {
        $('#comment_td').html('No Comments');
    }
    

    但它只在IE)中工作)在Firefox中,这种情况不执行。你能帮助我吗?

    5 回复  |  直到 14 年前
        1
  •  1
  •   hunter    14 年前
    if ($('#comment_td').html().trim() == "") {
        $('#comment_td').html('No Comments');
    }
    
        2
  •  2
  •   Greg    14 年前

    如果要查看是否所有内容都为空,则可能需要从中修剪任何空格。

    if($('#comment_td').html().trim().length == 0) {
        $('#comment_td').html('No Comments');
    }
    

    有些浏览器会删除重复的空格,如果没有其他内容,甚至可能会删除两个标记之间的所有空格。

    如果希望检查是否有空格,则应使用 &nbsp; 像这样的角色:

    <td id="comment_td">&nbsp;&nbsp;</td>
    
        3
  •  2
  •   RobertPitt    14 年前

    请尝试以下操作:

    var Comment = $('#comment_td');
    if(Comment.html().trim().length == 0)
    {
        Comment.html('No Comments');
    }
    

    通过检查修剪长度,你专门声明删除空白,因为一些浏览器,如IE将删除空白,因为其他人不会,所以在Firefox中,因为元素中有一个空间,它实际上存在。

    如果注释中的注释位于容器中,则还可以检查子项,例如:

    <td id="comment_td">
       <p class="comment">A comment</p>
       <p class="comment">A comment</p>
    </td>
    

    然后在jQuery中可以执行以下操作:

    if($("#comments_td > p.comment").size() == 0)
    {
       //No Comments.
    }
    
        4
  •  0
  •   meder omuraliev    14 年前
    var empty = $.trim( $('#comment_td').html() ).length == 0;
    
    if ( empty ) {
      // do whatever
    }
    
        5
  •  0
  •   Community CDub    8 年前
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    

    以及

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
    

    在firefox下呈现上述两个不同的内容。

    这可能与你的 !DOCTYPE 定义在 HTML 文件,之前 HTML格式 标签。了解更多关于这些的信息 Mysterious Gaps .