如何更改html字符串?

时间:2014-03-12 16:14:07

标签: javascript jquery html knockout.js

我正在读取一个返回html字符串的api。我正在使用knockout将html绑定到div的内容。

我想要做的是在绑定之前更改该字符串中的锚元素。

例如,假设我将此作为回复。

"<div>Lorem ipsum <a href='#'>link1</a> more random text</div>"

我想将锚文本更改为其他内容。

这就是我现在正在尝试的

var htmlString = "<div>Lorem ipsum <a href='#'>link1</a> more random text</div>";
var links = $(htmlString).find("a");
$(links[0]).text("hello world");
$("#stringTarget").html(htmlString);

并且它没有进行更新。

注意:示例不使用knockout.js,它只是为了说明编辑字符串的过程,然后将div的html设置为更改后的字符串。

Here is a fiddle of this example

3 个答案:

答案 0 :(得分:1)

你可以使用

var htmlString = $("<div>Lorem ipsum <a href='#'>link1</a> more random text</div>");
var links = $(htmlString).find("a").text("hello world");
$("#master").html(htmlString);

您应该使用$()将其作为对象

Demo

答案 1 :(得分:1)

var htmlString = "<div>Lorem ipsum <a href='#'>link1</a> more random text</div>";
var elems = $.parseHTML(htmlString);
$(htmlElements).children('a').text('my new text');

答案 2 :(得分:1)

你在做的是:

在var htmlString中实例化links锚点(htmlString保持不变):

var links = $(htmlString).find("a");

并将文本文本设置为var链接中的第一个锚点(htmlString仍保持不变):

$(links[0]).text("hello world");

然后,您正在检索未更改的原始htmlString:

$("#stringTarget").html(htmlString);

相反,

如何直接在一行中设置它?

var htmlString = "<div>Lorem ipsum <a href='#'>link1</a> more random text</div>";
$("#stringTarget").html(htmlString).find("a").text("hello world");

小提琴:http://jsfiddle.net/8gWGY/1/