我想要2个变量中的文本,如:
var a = "Bar" ;
var b = "by year" ;
HTML:
<h5 class="heading">Bar<span class="cT">by year</span></h5>
答案 0 :(得分:3)
对于第一个变量,您可以使用以下方式获取文本节点:
var a = $('.heading').contents().filter(function() {
return this.nodeType === Node.TEXT_NODE;
}).text();
表示第二个元素:
var b = $('.ct').text();
答案 1 :(得分:1)
您可以使用解构分配来获取.firstChild
.textContent
.heading
和.childNodes
属性
let {0: {textContent: a}, 1: {firstChild: {textContent: b}}} = document.querySelector(".heading").childNodes;
console.log(`a:${a}, b:${b}`);
&#13;
<h5 class="heading">Bar<span class="cT">by year</span></h5>
&#13;
答案 2 :(得分:1)
假设h5只有2个包含文本的节点。
您可以尝试以下方法(不需要jQuery只创建html元素)
var $content = $(`
<h5 class="heading">
Bar
<span class="cT">
by year
</span>
</h5>`);
var [a,b] =
[]
.map.call(
$content[0].childNodes
,x=>x.textContent
)
.map(x=>x.trim())
.filter(x=>x!=="")
;
alert("a is:"+a);
alert("b is:"+b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 3 :(得分:0)
这是解决此问题的另一种选择:
let a = jQuery(".heading").clone().find('span').remove().end().text();
let b = jQuery(".heading > span").text()
关于a
执行克隆,然后从克隆中删除范围并捕获操纵克隆的文本。
关于b
,我们会提取span
的直接.heading
子项的文字。