从标记值 jquery 中删除动态生成的字符串

Remove dynamically generated string from tag value jquery

我有一个如下所示的代码,我想删除在页面加载时动态创建的字符串:

<nav id="navtop"> Dynamically generated text here 
<ul><li>Item 1</li><li>Item 2</li>...</ul></nav>

问题是如何从标记文本值中删除此字符串 "Dynamically generated text here"(由脚本在页面加载时动态生成)?

我正在考虑使用这段代码,但没有成功:

var str = "dynamic text";
var $holder = $('#navtop');
var value = $holder.text();
if(value == str){
$holder:contains(str).remove();

$( "value:contains('dynamic text')" ).remove();

非常感谢任何帮助。

您可以执行以下操作 -

var ulText = $('#navtop ul').text();
var navText = $('#navtop').text();
var textToRemove = navText.substring(0, navText.indexOf(ulText));


$('div').html(textToRemove);

$('#navtop2').html($("#navtop2").html().replace(textToRemove, ''));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Original DOM:
<nav id="navtop">Dynamically generated text here
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>...</ul>
</nav>

Text to remove:
<div></div>

<br/>
<br/>After removing dynamic text:

<nav id="navtop2">Dynamically generated text here
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>...</ul>
</nav>

<span></span>

首先将ul的内容存入临时变量:

var inside = $("#navtop ul").clone();

使用此代码:

 $("#navtop").html(inside);

Here is a working fiddle