如何使用包括类等的jquery(不仅仅是文本)替换整个范围?

时间:2014-04-01 03:14:53

标签: jquery html

我有以下html:

 <span class=descriptionLink complete">Test</span>

jquery代码:

 var name = card.find(".descriptionLink");
 name.html("<span class='newLink incomplete'>Test 1</span>");

但我意识到它在跨度内创建了一个跨度,因为html()似乎显示了我放在span中的任何东西(不替换它)

 <span class=descriptionLink complete">
          <span class='newLink incomplete'>Test 1</span>
 </span>

替换整个范围的最佳方法是什么(不仅仅是更改其中的文本或html?)

4 个答案:

答案 0 :(得分:3)

您可以使用replaceWith()来实现此目标。

  

描述:用匹配替换匹配元素集中的每个元素   提供的新内容并返回该元素集   除去。

在这种情况下:

var name = card.find(".descriptionLink");
name.replaceWith("<span class='newLink incomplete'>Test 1</span>");

jsFiddle here

答案 1 :(得分:2)

您可以使用 .replaceWith() 代替.html()

  

用提供的元素替换匹配元素集中的每个元素   新内容并返回已删除的元素集。

name.replaceWith("<span class='newLink incomplete'>Test 1</span>");

答案 2 :(得分:1)

使用.html()用HTML替换选择器的内容。您希望将选择器本身替换为HTML内容,因此请改用.replaceWith

var name = card.find(".descriptionLink");
name.replaceWith("<span class='newLink incomplete'>Test 1</span>");

答案 3 :(得分:0)

你缺少引语:

<span class="descriptionLink complete">Test</span>

//     here ^^^

并使用replaceWith jquery方法:

var name = card.find(".descriptionLink");
name.replaceWith("<span class='newLink incomplete'>Test 1</span>");