jquery& doc.createElement抛出<的错误

时间:2014-04-17 16:38:56

标签: javascript jquery

$("<test")&amp;由于&lt; document.createElement(",test")引发错误与文本关联的字符。我不想替换角色&amp;想看看是否有使用这样的文本创建dom或jquery对象的选项。我知道替换会工作,但因为代码是预先存在的&amp;因为代码是这样写的,它假设它可以有简单的文本(textnode)或html标签(如span),因此它会发生错误,因为它无法检查它是否是正确的自我关闭html标记。

我正在考虑将其创建为xml节点&amp;然后在尝试创建jquery对象之前检查childnode是否是textNode,但是我正在寻找建议&amp;解决此类问题的最佳方法。我知道替换&lt;将工作&amp;也没有必要检查纯文本的属性,但由于代码是动态的,它有时会检索纯文本和文本。有一段时间它会给出有效的html标签,说明为什么会出现这个问题

1 个答案:

答案 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,"&lt;"));   //escape the &lt; 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") );