我有以下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?)
答案 0 :(得分:3)
您可以使用replaceWith()
来实现此目标。
描述:用匹配替换匹配元素集中的每个元素 提供的新内容并返回该元素集 除去。
在这种情况下:
var name = card.find(".descriptionLink");
name.replaceWith("<span class='newLink incomplete'>Test 1</span>");
答案 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>");