jQuery替换第一个文本实例

gri*_*egs 4 jquery

如果我有这样的文字;

<p>&nbsp;</p>
<p>this is the real text</p>
<p>&nbsp;</p>
<p>more</p>
Run Code Online (Sandbox Code Playgroud)

我需要的是一个jQuery,它将替换只有<p>&nbsp;</p>'' 的第一个实例.

所以调用后的结果应该是;

<p>this is the real text</p>
<p>&nbsp;</p>
<p>more</p>
Run Code Online (Sandbox Code Playgroud)

但如果第一行不是<p>&nbsp;</p>那么呼叫应该什么都不做.

编辑

我试过从@Joey C实现解决方案,但我无法让它工作.删除只是没有.

var myHtml = "<p>abc</p><p>next para</p>";
var newElement = $(myHtml);

if ($(newElement).first("p").text() == "abc") {
    $(newElement).first("p").remove();
}

alert($(myHtml).text());
Run Code Online (Sandbox Code Playgroud)

Joe*_* C. 8

下面找到ap元素的第一个实例,如果它的html等于&nbsp;你指定的" ",则将它从DOM中删除.

   if ($("p:first").html() == "&nbsp;")  
     $("p:first").remove();
Run Code Online (Sandbox Code Playgroud)

如果html作为字符串存储在变量myHTML中,则可以创建DOM元素并执行类似的比较.在测试中,我发现如果使用div包装正在创建的元素,它会更好:

  var myHtml = "<p>abc</p><p>next para</p>";
  var newElement = $("<div>" + myHtml + "</div>");

  if (newElement).find("p:first").text() == "abc") {
     newElement.find("p:first").remove();
  }

  alert(newElement.html());
Run Code Online (Sandbox Code Playgroud)

这实际上不会更新包含原始html代码的字符串,因此如果您仍然需要该变量,则必须重新分配它.

  myHTML = newElement.html();
Run Code Online (Sandbox Code Playgroud)