Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用图像更改li中的文本_Javascript_Jquery_Html_Html Lists - Fatal编程技术网

Javascript 使用图像更改li中的文本

Javascript 使用图像更改li中的文本,javascript,jquery,html,html-lists,Javascript,Jquery,Html,Html Lists,我想更改一个li中的文本。但是这个李有一个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">Tex

我想更改一个li中的文本。但是这个李有一个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>
但它正在取代一切,包括img。 我只想更改文本:Text1,Text2

有什么想法吗


谢谢

要访问元素中的文本节点,需要使用
contents()
,然后按节点类型使用
filter()
。然后可以使用
replaceWith()
更改文本。试试这个:

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


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

您也可以这样做:


将图像存储在单独的变量中,并在替换文本后将图像放回原处

$("li b").each(function () {
    var $img = $(this).find('img'); 
    $(this).text(sometext).prepend($img);
})

您要替换什么文本?
Text1
0
?使用什么?有两个文本内容,您要替换其中一个,并且在$(this.HTML('text')中使用
内部的
似乎是无效的HTML标记。。您也可以尝试一下这是最优雅的方式,但是我想使用元素来更改文本,它给了我错误:
$('li:first b').contents().filter(function(){return this.nodeType==3;}).replaceWith($(this.text()+“hello”)
$(this).text()
不在范围内。您需要使用一个处理函数:
replaceWith(函数(){return$(this.text()+'foo';})
$("li b").each(function () {
   this.childNodes[1].textContent = "32323";
})
$("li b").each(function () {
    var $img = $(this).find('img'); 
    $(this).text(sometext).prepend($img);
})