javascript - 为什么p标签的内容是什么都没有但长度却是1?

标签 javascript jquery html

我有一段 HTML 代码如下

<div id="test">
  <img width="570" title="20160201121020_208.png" src="/201602/01/20160201121020_208.png" hasele="">
  <p>&#8203;&nbsp;</p>
  <p>


  </p>
</div>

我的 JavaScript 代码如下

$("#test").children().each(function(idx, p){
    node = $(p);

    if(node.is("div") || node.is("p")){
        var txt = $.trim(node.text());
        if(txt != ""){
            console.log("========="+ txt + ":" + txt.length);
        }
    }
});

console.log的结果是“=========1”,这让我很困惑。因为我认为console.log应该没有结果。

最佳答案

您有两个 p 元素:

  1. 包含一个零宽度空格字符和一个不间断(“硬”)空格字符

  2. 另一个包含各种空格和/或换行符

$.trim将 trim 后者,但只会从第一个中删除硬空间(不是零宽度空间)。如果您想删除该零宽度空间,则必须专门这样做。 (JavaScript 自己的 String#trim [ spec | MDN ] 也会留下零宽度的空格。)

var txt = node.text().replace(/[\s\u200B]/g, '');

\u200B 是该 HTML 字符实体的 Unicode 转义。

实例:

$("#test").children().each(function(idx, p){
    node = $(p);

    if(node.is("div") || node.is("p")){
        var txt = node.text().replace(/[\s\u200B]/g, '');
        if(txt != ""){
            console.log("========="+ txt + ":" + txt.length);
        } else {
            console.log("It's blank");
        }
    }
});
<div id="test">
    <img width="570" title="20160201121020_208.png" src="/201602/01/20160201121020_208.png" hasele="">
    <p>&#8203;&nbsp;</p>
    <p>
  
  
    </p>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 为什么p标签的内容是什么都没有但长度却是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598630/

相关文章:

javascript - 使用输入变量和表单名称来引用输入元素

javascript - CORS XMLHttpRequest 请求来源和引用者

javascript - 使用 LazySizes 延迟加载轮播图片

javascript - 为什么在我的 JS 嵌套数组中得到 "arr[i] is undefined"?

jquery - 通过 jquery 查找深度嵌套的输入

jquery - 双倍的 POST 请求而不是单一的

jquery - 如何根据内部元素的值订购商品?

html - Windows 10 通用应用程序的 AppBar 中的 FontAwesome 图标

javascript - 如何获取点击的兴趣点信息?

javascript - 延迟批量 GET 请求到服务器,JavaScript