$("<test")
&amp;由于&lt; document.createElement(",test")
引发错误与文本关联的字符。我不想替换角色&amp;想看看是否有使用这样的文本创建dom或jquery对象的选项。我知道替换会工作,但因为代码是预先存在的&amp;因为代码是这样写的,它假设它可以有简单的文本(textnode)或html标签(如span),因此它会发生错误,因为它无法检查它是否是正确的自我关闭html标记。
我正在考虑将其创建为xml节点&amp;然后在尝试创建jquery对象之前检查childnode是否是textNode,但是我正在寻找建议&amp;解决此类问题的最佳方法。我知道替换&lt;将工作&amp;也没有必要检查纯文本的属性,但由于代码是动态的,它有时会检索纯文本和文本。有一段时间它会给出有效的html标签,说明为什么会出现这个问题
答案 0 :(得分:1)
我不确定你的确切目标是什么,但基本上你需要做这样的事情:
function makeElemHack( str ) {
var div = $("<div>").html(str); //create a div and add the html
var html = div.html(); //read the html
if (!html.length) { //if the html has no length the str was invalid
div.html(str.replace(/</g,"<")); //escape the < like text should be
//div.text(str); //or you can just add it as plain text
}
return div; //with the div wraper
//return div.contents(); //without the div wrapper
}
var bd = $("body");
bd.append( makeElemHack("<p>Hello</p>") );
bd.append( makeElemHack("1<0") );
bd.append( makeElemHack("<booo") );