用图像更改li里面的文字

时间:2014-04-30 12:29:21

标签: javascript jquery html html-lists

我想改变里面的文字。但这个李有一个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,...

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

要获取元素中的文本节点,您需要使用contents(),然后使用nodeType的filter()。然后,您可以使用replaceWith()更改文本。试试这个:

$('li:first b').contents().filter(function() {
    return this.nodeType == 3;
}).replaceWith('foo');

Example fiddle

我显然硬编码使用第一个li元素,但您可以根据需要更改选择器。

答案 1 :(得分:1)

你也可以这样做:

http://jsfiddle.net/YNLXQ/

$("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);
})