javascript - 检查元素是否包含字符串,并且除了字符串之外什么都没有 - 也许是正则表达式

标签 javascript jquery html regex

我有一个带有表单模块的 CMS,它会生成一个糟糕的标记,这使得它绝对不可能设置样式。表单对象和元素嵌套在大量的表格、行和单元格中。

我正在努力通过 JavaScript 过滤出我需要的所有元素,将它们放入数组中,并使用这些元素创建新的前端开发人员友好的标记。

输入字段、图例和字段集没有问题 - 但我在过滤标签时遇到问题。我的标签要么像这样包装:<tr><td>Label</td></tr><tr><td><b>Label</b></td></tr> - 我需要过滤掉这些,并将它们放入一个数组中。

除了使用正则表达式之外,是否有更简单的方法来检查我的 td 是否包含纯字符串,而不是输入或其他一些 html 元素?

var regex = new RegExp(???);
jQuery("td").each( function() {
    if(jQuery(this).has("b") || regex.test(jQuery(this).text()))
    {
        // Do stuff here
    }
}

提前致谢

最佳答案

这将返回所有没有子项或只有一个子项(粗体标记)的 td。

$('td').filter(function() {
    var children = $(this).children();
    return children.length == 0 
              || (children.length == 1 && children.first().is('b'))
});

http://jsfiddle.net/t9bMG/

如果您只想返回实际包含文本的元素,您可以使用:

$('td').filter(function() {
    var t = $(this), children = t.children();
    return t.text().length > 0 
               && (children.length == 0 
                    || (children.length == 1 && children.first().is('b')))
})

http://jsfiddle.net/t9bMG/1/

关于javascript - 检查元素是否包含字符串,并且除了字符串之外什么都没有 - 也许是正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926465/

相关文章:

javascript - 为什么浏览器限制在 Canvas 中使用来自其他域的图像?

javascript - 页面的 CSS 输入动画

jquery 选择器不适用于加载了 asp :UpdatePanel 的控件

javascript - 遍历数组并将重复项移动到单独的数组

javascript - 暂停与 firstChild 的视频?

javascript - 使用 JavaScript 启动转换

javascript - 从 Javascript/typescript 对象的非空属性创建一个数组

jquery - 内联 block 列表网格布局中的垂直对齐

JavaScript 代码在 localhost 中有效,但在实时站点中无效?

javascript - 使用 Socket.io 发送 TCP 消息时出现问题