我想在div中创建一个包含文本字符串的所有html元素的数组,例如
<p>some string</p>.
Run Code Online (Sandbox Code Playgroud)
我不想得到字符串,我希望数组项是元素(在示例中,将是p节点).我事先不知道字符串是什么,所以我找不到匹配的字符串值.我也不希望空文本节点最终出现在数组中.
谢谢!
Vin*_*ert 10
$("#my_div *").filter(function()
{
var $this = $(this);
return $this.children().length == 0 && $.trim($this.text()).length > 0;
})
Run Code Online (Sandbox Code Playgroud)
此版本不会返回包含具有文本的元素的父元素,而只返回包含最后一级元素的元素.
可能不是最快但在StackOverflow主页上运行得很好:)
自定义选择器可能对您的情况有所帮助:
jQuery.expr[':'].hasText = function(element, index) {
// if there is only one child, and it is a text node
if (element.childNodes.length == 1 && element.firstChild.nodeType == 3) {
return jQuery.trim(element.innerHTML).length > 0;
}
return false;
};
Run Code Online (Sandbox Code Playgroud)
之后,您可以简单地执行此操作:
$('#someDiv :hasText') // will contain all elements with text nodes (jQuery object)
$('#someDiv :hasText').get() // will return a regular array of plain DOM objects
Run Code Online (Sandbox Code Playgroud)
我假设您只是尝试选择仅在其中包含文本的元素.
| 归档时间: |
|
| 查看次数: |
8891 次 |
| 最近记录: |