我想知道有没有办法转换它:
quantityTextView.setText(Integer.toString(x));
对此:
<body>
Foo
Bar
<div>Abc</div>
<div>Xyz</div>
</body>
作为一个新手,我了解<body>
<div id="new">
Foo
Bar
</div>
<div>Abc</div>
<div>Xyz</div>
</body>
和jQuery innerHTML
的基本内容,但是这样的代码:
wrap
给了我全身,包括var foo = document.body.innerHTML;
console.log(foo);
和Abc
div。所以,它并没有解决问题。
答案 0 :(得分:4)
您可以使用contents().filter()
检索文本节点,然后使用wrapAll()
将它们放入新的div
元素中来实现此目的。试试这个:
$('body').contents().filter(function() {
return this.nodeType == 3 && this.textContent != '';
}).wrapAll('<div id="new" />');
&#13;
/* only to show the new div exists... */
#new { border: 1px solid #C00; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Foo
Bar
<div>Abc</div>
<div>Xyz</div>
&#13;
答案 1 :(得分:3)
非jQuery解决方案:
您可以遍历正文的所有子节点,并将每个文本节点移动到新元素,直到到达第一个元素节点。例如:
var div = document.createElement('div');
div.id = 'new';
var childNodes = document.body.childNodes;
while (childNodes[0].nodeType !== Node.ELEMENT_NODE) {
div.appendChild(childNodes[0]);
}
document.body.insertBefore(div, childNodes[0]);
#new {
color: red;
}
Foo
Bar
<div>Abc</div>
<div>Xyz</div>
答案 2 :(得分:1)
您可以使用.contents()
,.filter()
,.prependTo()
。要保留换行符,请将#new
css
white-space
属性设置为pre
。
var nodes = $("body").contents().filter(function() {
return this.nodeType === 3 && /Foo|Bar/.test(this.textContent)
});
$("<div></div>", {
id:"new",
html: nodes,
css: {whiteSpace: "pre"}
}).prependTo("body")
&#13;
#new {
color: sienna;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
Foo
Bar
<div>Abc</div>
<div>Xyz</div>
</body>
&#13;