【问题标题】:Getting a HTML element DOM as string using javascript without child elements使用不带子元素的 javascript 将 HTML 元素 DOM 作为字符串获取
【发布时间】:2014-11-10 15:44:22
【问题描述】:

我想知道是否有任何方法可以获取没有子元素的 html 元素/节点作为字符串。
这个问题可能看起来像这个问题的重复:jQuery, get html of a whole element
但我只希望 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" />'});

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

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

【问题讨论】:

    标签: javascript jquery filter tostring


    【解决方案1】:

    我能想到的最简单的方法是用 DOM 的 cloneNode 浅层克隆它,然后获取其中的 outerHTML

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

    Example (我自己做的,是那种小提琴情结)


    或使用更多 jQuery:Example

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

    请注意,元素内的文本是“子”内容(具体来说,一个或多个Text 子节点)。如果你想要那些,你需要一个循环。 jQuery 的 contents 可以提供帮助:Example

    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;
    

    【讨论】:

    • 谢谢!您的解决方案是完美的!小提琴就是为了解释我的要求而复杂的:P.
    猜你喜欢
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2021-04-27
    • 2011-03-07
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多