是否可以在
标签之间选择文字?我正在使用下面预先格式化的代码来尝试选择这些数据:纽约,NY 10012
我和$('#address').find('br').eq(2).text()
一起玩过,但知道必须有更好的方法。
<div id="address">
Joe Dirt<br>
PO Box 842<br>
New York NY 10012<br>
800-555-5555<br>
<br>
</div>
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:4)
您可以使用DOM并使用childNodes
数组选择适当的TextNode,而不是根据html选择文本。
由于节点从0
开始计算:
address.childNodes[0] # "Joe Dirt"
address.childNodes[1] # br element
address.childNodes[2] # "PO Box 842"
address.childNodes[3] # br element
address.childNodes[4] # "New York NY 10012"
address.childNodes[5] # br element
address.childNodes[6] # "800-555-5555"
address.childNodes[7] # br element
示例代码:
var address = document.getElementById ("address");
alert(address.childNodes[4].nodeValue);
答案 2 :(得分:3)
var vals = $("#address > br").map(function(i, br) {
return $.trim(br.previousSibling.data);
}).toArray();
由于文字始终显示在<br>
元素之前,因此您可以选择br
并将每个.previousSibling.data
映射到数组。
这也不会受到HTML呈现在不同浏览器中略有不同的可能性,您可以通过HTML解析方法获得这些。
如果您只需要一个值,请执行以下操作:
var txt = $.trim($("#address > br")[2].previousSibling.data);
答案 3 :(得分:1)
这个怎么样:
var line = $("#address").html().split(/<br *\/?>/i)[2];
我知道这不是“选择”这一行,但是由于没有其他方式可以使用或不使用jQuery(你的解决方案对我来说不是开箱即用),我认为这可能是一个很好的方法。
请注意,它允许以不同的方式编写&lt; br&gt;标签
答案 4 :(得分:0)
试试这个:
var html = $('#address').html();
var arr = html.split('<br>');
var data = arr[2]; //the information that you want
答案 5 :(得分:0)
我可能会找到这个解决方案来找到你想要的文本字段:
$("div")
.contents()
.filter(function() {
return this.nodeType === 3;
})[2];
这里有:https://stackoverflow.com/a/298758/681538
为什么呢?因为它是分隔符不可知的,并且您实际上只是使用分隔符分隔的文本节点列表。既然我们可以使用jquery获取文本节点而不必关心你必须调整的分隔符,那么为什么我们呢?