我的HTML是:
<ul id="info">
<li>
<span>Name:</span>Charis Spiropoulos
</li>
...
我希望更改不在范围内的<li>
部分。怎么做到这一点?到目前为止,我有:
$("#info li:first").text(player);
修改:
我尝试了建议副本的解决方案,其中包含:
$("#info li:first").clone()
.children()
.remove()
.end()
.text("foo");
它没有用!
答案 0 :(得分:2)
如果要替换的文本始终是<li>
中的最后一个,那么简单的字符串替换应该可以解决问题:
var newText = "Panagiotis";
$("#info li:first").html($("#info li:first").html().replace(/[^>]+$/, "") + newText);
快速解释:这个正则表达式 - /[^>]+$/
- 将找到最后>
和文本末尾之间的所有字符,而replace()函数只是删除它们。然后,您只需使用+
附加新名称。
答案 1 :(得分:1)
$("#info li:first").clone()
.children()
.remove()
.end()
.text();
代码非常自我解释,但它的作用是克隆list元素,删除所有子标记(在您的情况下,span标记),然后返回剩下的文本。
答案 2 :(得分:1)
以下是您可以使用的另一种方法:
var firstLi = $("#info li:first").get(0); //get raw DOM element;
var newContent = "Hi";
//If textContent is defined use it, otherwise use innerText:
firstLi.childNodes[2].textContent ? firstLi.childNodes[2].textContent = newContent : firstLi.childNodes[2].innerText = newContent;
答案 3 :(得分:0)
var htmlCont = $("#info li:first").html();
$("#info li:first").html("");
$("#info li:first").prepend(player+htmlCont);