使用没有子元素的javascript将HTML元素DOM作为字符串获取

Jer*_*man 1 javascript jquery tostring filter

我想知道是否有任何方法来获取一个没有子元素作为字符串的html元素/节点.
这个问题可能看起来像这个问题的重复:jQuery,获取整个元素的html.
但我只希望html元素本身作为一个字符串,没有它的孩子.

texts.push({title:'[#target, outerHTML]', value: $input[0].outerHTML});
texts.push({title:'[#target, $.html()]', value: $input.html()});

texts.push({title:'[#bigger_Target, outerHTML]', value: $('#bigger_Target')[0].outerHTML});
texts.push({title:'[#bigger_Target, $.html()]', value: $('#bigger_Target').html()});

texts.push({title:'[#target, DESIRED]', value: '<input class="test" data-type="text only" type="button" value="Test />"'});
texts.push({title:'[#bigger_Target, DESIRED]', value: '<div id="bigger_Target" />'});
Run Code Online (Sandbox Code Playgroud)

FIDDLE:
http ://jsfiddle.net/ttoom9hc/12/

来自其他帖子的FIDDLE:http :
//jsfiddle.net/u6avkvz0/

T.J*_*der 6

我能想到的最简单的方法是用DOM来浅析它cloneNode,然后得到outerHTML它:

var element = $("selector for the element you want");
var html = element[0].cloneNode(false).outerHTML;
Run Code Online (Sandbox Code Playgroud)

例子 (我自己做的,,那个小提琴复杂)


或者使用更多jQuery:示例

var html = $("selector for the element you want")
               .clone()
               .contents()
               .remove()
               .end()[0].outerHTML;
Run Code Online (Sandbox Code Playgroud)

请注意,元素内的文本是"child"内容(特别是一个或多个Text节点子节点).如果你想要那些,你需要一个循环.jQuery contents可以帮助那里:例子

var html = $("selector for the element you want")
        .clone()
        .contents()
        .each(function() {
          if (this.nodeType !== 3) { // It's not a Text node...
            $(this).remove();        // ...nuke it
          }
        })
        .end()[0].outerHTML;
Run Code Online (Sandbox Code Playgroud)