我想创建一个div内所有的HTML元素包含文本字符串,例如数组
<p>some string</p>.
我不想让琴弦的保持,我希望数组项是元素(在本例中,将是P个节点)。 我不知道什么手串会前,所以我不能找字符串值相匹配。 我也不想空文本节点阵列中的结束。
谢谢!
我想创建一个div内所有的HTML元素包含文本字符串,例如数组
<p>some string</p>.
我不想让琴弦的保持,我希望数组项是元素(在本例中,将是P个节点)。 我不知道什么手串会前,所以我不能找字符串值相匹配。 我也不想空文本节点阵列中的结束。
谢谢!
$("#my_div *").filter(function()
{
var $this = $(this);
return $this.children().length == 0 && $.trim($this.text()).length > 0;
})
这个版本将不会返回父元素含有文本,只有最后一个级别的元素的元素。
也许不是最快的,但工作得很好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;
};
在此之后,你可以简单地这样做:
$('#someDiv :hasText') // will contain all elements with text nodes (jQuery object)
$('#someDiv :hasText').get() // will return a regular array of plain DOM objects
我假设你只是想选择有他们的内纯文本元素。
你可以利用的不和空选择,以获得非空的元素,同时转换成一个阵列可以使用GET实现
$("#theDiv > :not(:empty)").get();
上述选择器变得“theDiv”的所有子元素和不为空(即,它们要么有孩子或文本),然后转换该匹配组到一个数组。
如果你想只有那些在他们里面的文本内容,这应该工作...
$("#theDiv > :not(:empty, :has(*))").get();
为了摆脱有空格的元素,你可以使用过滤器
$("#theDiv > :not(:has(*))").filter(function() {
return $.trim(this.innerHTML).length > 0;
}).get();
你可以通过循环孩子 ,抓住有一切的.text()值!= ""
var array = [];
var divSelector = "div.mine";
$(divSelector).contents().each(function()
{
// If not an element, go to next node.
if (this.nodeType != 1) return true;
var element = $(this);
if ($.trim(element.text()) != "")
array.push(element);
});
array
是对他们有一些文本元素的数组。
$(function() {
var array = new Array();
$("#testDiv *").each(function(x, el) {
if ($.trim($(el).text()) != '' ) {
array.push(el);
}
});
alert(array.length);
});
d是要在其下找到的东西在div
v是一个空数组
我必须在0开出。
该$ .trim使用,这样你没有得到这样的只是空白节点。
$("*",d).filter( function() {
return $.trim($(this).text()) != ""
} ).each( function() {
v[i] = $(this).text();
i++;
} );
你也可以使用v.push($(本))...这是什么,完全忘了。
使用:包含选择:
var matches = new Array();
$('#start_point *:contains(' + text + ')').each(function(i, item) {
matches.push( item );
}