javascript - jQuery 获取元素中的文本但忽略样式标签

标签 javascript jquery html css

我有测试 div 是否有一些非空白文本内容的 javascript 代码。

这可行,但它无法区分 div 中的文本内容或样式标签声明,并且当没有文本内容但带有 css 数据的样式标签时测试失败。

问题是如何在忽略样式标签的情况下测试空文本内容?

HTML:

<div id='test1'>
    <div>   </div>
</div>

<div id='test2'>
    <div>   </div>

<style>
.style1{
    border:1px;    
}        
</style>    

</div>

Javascript:

// Works
if($('#test1').text().trim().length==0){
    alert('test1 has no content!');
}    

// Does not work due to style1 declaration within style tag within div
if($('#test2').text().trim().length==0){
    alert('test2 has no content!');
}    

测试网址: http://jsfiddle.net/sLDWB/

最佳答案

一个选项是克隆元素并删除 style 标签:

$.fn.isTextless = function() {
   var txt = this.first()
                 .clone()
                 .find('style')
                 .remove()
                 .end()
                 .text();

   return $.trim(txt).length === 0; 
}

if ( $('#test2').isTextless() ) {
    alert('test2 has no content!');
} 

http://jsfiddle.net/5Z3M4/

关于javascript - jQuery 获取元素中的文本但忽略样式标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077204/

相关文章:

html - 如何垂直插入div?

javascript - 我可以使用localStorage创建永久数据库吗?

jquery - 验证错误消息样式

javascript - 将 Google map 标记保存到数据库

javascript - Angularjs 的推荐代码/项目结构

javascript - Intellij IDEA,直接在编辑器中运行 Javascript 代码

javascript - 正确/错误取决于屏幕尺寸动态?

javascript - 调用按钮单击功能时保持类 this

javascript - jquery 将代码片段绑定(bind)到 div 的最佳方法

javascript - 仅在使用 ECMAScript 模块时,分配给未声明的变量会在 Node 中引发 ReferenceError