Javascript jQuery.parseHTML的反面

Javascript jQuery.parseHTML的反面,javascript,jquery,Javascript,Jquery,jQuery.parseHTML()生成一个数组。我正在寻找一种将其转换回字符串的方法。这是我的首要问题 parseHTML()是将字符串视为html的唯一方法吗 基本上,我将字符串解析为html,以便使用jQuery的find()函数匹配某个元素,然后仅对该部分代码执行替换(有关更多详细信息,请参阅)。那么,解析为html是否有必要呢 听起来您只是想动态地构造一些DOM元素。您只需将一个HTML字符串传递给jQuery函数($()),就可以做到这一点。不需要parseHTML() var my

jQuery.parseHTML()
生成一个数组。我正在寻找一种将其转换回字符串的方法。这是我的首要问题

  • parseHTML()
    是将字符串视为html的唯一方法吗

  • 基本上,我将字符串解析为html,以便使用jQuery的
    find()
    函数匹配某个元素,然后仅对该部分代码执行替换(有关更多详细信息,请参阅)。那么,解析为html是否有必要呢


  • 听起来您只是想动态地构造一些DOM元素。您只需将一个HTML字符串传递给jQuery函数(
    $()
    ),就可以做到这一点。不需要
    parseHTML()

    var mySet = $('<div>blah blah blah<span>some stuff</span></div>');
    
    // perform operations on the set just like you would a regular jQuery set
    var divsInMySet = mySet.find('div');
    
    // be aware some functions will return unexpected results since your set exists in memory not on the page
    // for example anything related to positioning or visibility will fail
    var whoKnows = mySet.position();
    var dontDoThis = mySet.is(':visible');
    
    var mySet=$('blah blah blahsome stuff');
    //对集合执行操作,就像对常规jQuery集合执行操作一样
    var divsInMySet=mySet.find('div');
    //请注意,某些函数将返回意外结果,因为您的集合存在于内存中,而不是页面上
    //例如,任何与定位或可见性相关的操作都将失败
    var whowknows=mySet.position();
    var dontDoThis=mySet.is(':visible');
    
  • jQueryElement.outerHTML()

  • 不可以。您也可以使用jQuery快捷方式:
    $(“”)

  • 不可以。您也可以尝试字符串操作,但是jQuery方法很有可能会更简单、更可靠


  • 当我试图在页面中将html对象转换回字符串时,我无法使用该函数

    var my_variable="$("<div></div>");
    $("my_variable").html();
    

    这是解决首要问题的简单方法:

    var $html = $($.parseHTML(html));//transform html string into a jQuery element
    $html.append('<div id="other_test"></div>');//handling
    console.log("string again, but edited", $html.get(0).outerHTML);//converting it to string again
    
    var$html=$($.parseHTML(html))//将html字符串转换为jQuery元素
    $html.append(“”)//处理
    log(“再次输入字符串,但已编辑”,$html.get(0.outerHTML)//再次将其转换为字符串
    
    一个简单的函数
    函数HTMLTOURCE(选择器){
    返回$('').append($(选择器).clone()).html();
    };
    HTMLTOURCE(“主体”);
    
    “那么,解析为html是否有必要?”是的。如果必须将其恢复为字符串形式,则可以将dom集合包装在另一个元素中,选择该元素,然后获取其html,但是由于浏览器html解析的差异,无法保证html将是原始格式。
    var string=$(string).find('element').replaceWith('other_element').end().get(0).outerHTML
    @adeneo,我如何执行文本替换而不是元素替换?使用regex,但不应该使用regex'es解析HTML。outerHTML不是jQuery函数,它是javascript属性。同样,它也不能像你所说的那样,它将获取一个jQuery对象,并用该对象的整个HTML吐出一个字符串。不过,这里有一个扩展jQuery以实现上面所说的功能的好例子:(jessica的回答)
    var $html = $($.parseHTML(html));//transform html string into a jQuery element
    $html.append('<div id="other_test"></div>');//handling
    console.log("string again, but edited", $html.get(0).outerHTML);//converting it to string again
    
    function htmlToSource(selector){
     return $('<div />').append($(selector).clone()).html();
    };
    
    htmlToSource('body');