修改li的子集

时间:2015-11-14 14:29:03

标签: javascript jquery html html5 list

我的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");

它没有用!

4 个答案:

答案 0 :(得分:2)

如果要替换的文本始终是<li>中的最后一个,那么简单的字符串替换应该可以解决问题:

var newText = "Panagiotis";
$("#info li:first").html($("#info li:first").html().replace(/[^>]+$/, "") + newText);

快速解释:这个正则表达式 - /[^>]+$/ - 将找到最后>和文本末尾之间的所有字符,而replace()函数只是删除它们。然后,您只需使用+附加新名称。

答案 1 :(得分:1)

link提供的Andreas,您可以

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