我有一个带有表单模块的 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'))
});
如果您只想返回实际包含文本的元素,您可以使用:
$('td').filter(function() {
var t = $(this), children = t.children();
return t.text().length > 0
&& (children.length == 0
|| (children.length == 1 && children.first().is('b')))
})
关于javascript - 检查元素是否包含字符串,并且除了字符串之外什么都没有 - 也许是正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926465/