使用jQuery text()方法判断空字符串的条件语句失效问题
问题原因与解决方案
你的条件判断失效,核心原因是目标元素的<p>标签中包含不可见的零宽度空白字符(比如\u200B)和换行、空格,text()方法会把这些字符全部捕获,导致变量看起来是空的,但实际是包含隐藏字符的非空字符串,因此a == ""永远不成立。
解决方法
通过正则表达式移除所有空白类字符(包括常规空格、换行、制表符,以及零宽度空白字符),再判断清理后的字符串是否为空:
// 针对ControlWrapper元素 var a = $("#ControlWrapper").text().replace(/[\s\u200B\u200C\u200D\uFEFF]/g, ''); if (a === "") { // 文本为空时的逻辑 } else { // 文本非空时的逻辑 }
针对长ID的DOM元素
同样的逻辑可以直接复用:
var content = $("#ctl00_PlaceHolderMain_txtContent__ControlWrapper_RichHtmlField") .text() .replace(/[\s\u200B\u200C\u200D\uFEFF]/g, ''); if (content === "") { // 执行空文本逻辑 } else { // 执行非空文本逻辑 }
补充说明
正则中的\s匹配所有常规空白字符,\u200B、\u200C、\u200D、\uFEFF是常见的零宽度空白/分隔符,这些字符肉眼不可见,但会被text()方法读取,导致字符串判定异常。
内容的提问来源于stack exchange,提问作者rajiv gandhi
相关产品推荐
相关产品推荐

