我想改变里面的文字。但这个李有一个img。 这里是html:
<div>
<ul>
<li><b><img src="../../../Images/folder1/image1.png">Text1</b><i>0</i></li>
<li><b><img src="../../../Images/folder1/image2.png">Text2</b><i>1</i></li>
<li><b><img src="../../../Images/folder1/image3.png">Text3</b><i>2</i></li>
<li><b><img src="../../../Images/folder1/image4.png">Text4</b><i>3</i></li>
<li><b><img src="../../../Images/folder1/image5.png">Text5</b><i>4</i></li>
</ul>
</div>
我正在尝试这个:
$("li").each(function () {
$(this).text(sometext);
})
但它正在取代所有人,包括img。 我只想更改文本:Text1,Text2,...
有什么想法吗?
谢谢!
答案 0 :(得分:5)
要获取元素中的文本节点,您需要使用contents()
,然后使用nodeType的filter()
。然后,您可以使用replaceWith()
更改文本。试试这个:
$('li:first b').contents().filter(function() {
return this.nodeType == 3;
}).replaceWith('foo');
我显然硬编码使用第一个li
元素,但您可以根据需要更改选择器。
答案 1 :(得分:1)
你也可以这样做:
$("li b").each(function () {
this.childNodes[1].textContent = "32323";
})
答案 2 :(得分:1)
将图像存储在单独的变量中,并在替换文本之后重新添加图像。
$("li b").each(function () {
var $img = $(this).find('img');
$(this).text(sometext).prepend($img);
})