如何在<;李>;用jQuery?

如何在<;李>;用jQuery?,jquery,jquery-selectors,Jquery,Jquery Selectors,我有这样的想法: <ul> <li> ... </li> <li> Office <table> ....... </table> </li> </ul> 但是它取代了我所有的(因此它也删除了表…)我知道这是正常的,但是如何只替换文本Office请?使用.contents和.eq只选择第一个节点 $("li:contains('Offic

我有这样的想法:

<ul>
  <li>
    ...
  </li>
  <li>
    Office
    <table>
      .......
    </table>
  </li>
</ul>

但是它取代了我所有的
  • (因此它也删除了表…)我知道这是正常的,但是如何只替换文本
    Office
    请?

    使用
    .contents
    .eq
    只选择第一个节点

     $("li:contains('Office')").contents().eq(0).replaceWith('<h3>Office</h3>');
    
    $(“li:contains('Office')).contents().eq(0).替换为('Office');
    
    示例:

    您可以使用获取
  • 元素的所有直接子元素,并累积出现在
    元素之前的文本节点

    从这里,您可以使用在文本节点周围创建
    元素:

    var $contents = $("li:contains('Office')").contents();
    var tableIndex = contents.index("table");
    $contents.filter(function(index) {
        return this.nodeType == 3 && index < tableIndex;
    }).wrapAll("<h3>");
    
    var$contents=$(“li:contains('Office'))”).contents();
    var tableIndex=目录索引(“表格”);
    $contents.filter(函数(索引){
    返回this.nodeType==3&&index
    var $contents = $("li:contains('Office')").contents();
    var tableIndex = contents.index("table");
    $contents.filter(function(index) {
        return this.nodeType == 3 && index < tableIndex;
    }).wrapAll("<h3>");