如何使用 jQuery 将元素转换为字符串

发布于 2025-01-03 10:34:41 字数 546 浏览 1 评论 0原文

我不需要innerHTML,我需要innerHTML 带有封闭标签。让我们写一些例子:

<div id="1" style="qwe"><span class="1"></span></div>
<div id="2" style="asd"><span class="2"></span></div>
<div id="3" style="zxc"><span class="3"></span></div>

我可以通过 id 获取元素:

$("#1")

我如何获取这样的字符串:

<div id="1" style="qwe"><span class="1"></span></div>

当然 html() 不起作用,因为它只会返回 span。

I don't need innerHTML i need innerHTML with enclosing tags. Lets write some example:

<div id="1" style="qwe"><span class="1"></span></div>
<div id="2" style="asd"><span class="2"></span></div>
<div id="3" style="zxc"><span class="3"></span></div>

I can get element by id:

$("#1")

And how can i get string like that:

<div id="1" style="qwe"><span class="1"></span></div>

Of course html() doesn't work becouse it will return only span.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

心房敞 2025-01-10 10:34:41

你可以这样做:

alert( $('#\\31 ').wrap("<div />").parent().html() )
$('#\\31 ').unwrap()

you could do something like this:

alert( $('#\\31 ').wrap("<div />").parent().html() )
$('#\\31 ').unwrap()
浮华 2025-01-10 10:34:41

像这样的东西应该可以正常工作:

jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};

var outer = $("#1").outerHTML();

这是一个工作小提琴

其他信息

请参阅http://www.yelotofu.com/ 2008/08/jquery-outerhtml/ 为原创文章。

Something like this should work fine:

jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};

var outer = $("#1").outerHTML();

Here's a working fiddle.

Additional Info

See http://www.yelotofu.com/2008/08/jquery-outerhtml/ for original article .

百变从容 2025-01-10 10:34:41

使用这个 jQuery 插件: https://github.com/brandonaaron/ jquery-outerhtml/blob/master/jquery.outerhtml.js

/*! Copyright (c) 2006 Brandon Aaron ([email protected] || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 */

(function($){
  var div;

  $.fn.outerHTML = function() {
    var elem = this[0],
      tmp;

    return !elem ? null
      : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp
      : ( div = div || $('<div/>') ).html( this.eq(0).clone() ).html();
  };

})(jQuery);

使用如下:

$('#some-element').outerHTML();

Use this jQuery plugin: https://github.com/brandonaaron/jquery-outerhtml/blob/master/jquery.outerhtml.js

/*! Copyright (c) 2006 Brandon Aaron ([email protected] || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 */

(function($){
  var div;

  $.fn.outerHTML = function() {
    var elem = this[0],
      tmp;

    return !elem ? null
      : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp
      : ( div = div || $('<div/>') ).html( this.eq(0).clone() ).html();
  };

})(jQuery);

Use it as follows:

$('#some-element').outerHTML();
完美的未来在梦里 2025-01-10 10:34:41

您可以使用 outerhtml,但在 JavaScript 中使用 DOM 而不是 jQuery,例如:

  var text = document.getElementById('hello').outerHTML;

jsbin 代码来演示:
http://jsbin.com/obutul/edit#javascript,html,live

You can use outerhtml but in JavaScript over the DOM and not jQuery, for example:

  var text = document.getElementById('hello').outerHTML;

jsbin code to demonstrate:
http://jsbin.com/obutul/edit#javascript,html,live

暮色兮凉城 2025-01-10 10:34:41

html 元素上还有一个 outerHTML 属性,其中包括所选元素本身。

There is also an outerHTML property on html elements, which includes the selected element itself.

唱一曲作罢 2025-01-10 10:34:41

现在,outerHTML 已在几乎所有浏览器中实现(包括旧版本的 ie - firefox 是唯一一个拖拖拉拉的浏览器,但它是 计划用于 v11),因此我改编了 @James Hill 的答案,以在存在的情况下使用此本机功能,因为它应该更高效。

jQuery.fn.outerHTML = function(s) {
    return this[0].outerHTML ? this[0].outerHTML :
           s ? this.before(s).remove()
             : jQuery("<p>").append(this.eq(0).clone()).html();
};

var outer = $("#1").outerHTML();

请注意,outerHTML 中存在一些跨浏览器不一致的情况(例如,查看此页面在chrome中并与ie进行比较)

outerHTML is implemented across nearly all browsers now (including old versions of ie - firefox is the only one dragging its feet, but it's scheduled for v11), so I've adapted @James Hill's answer to use this native functionality where present as it should be more efficient.

jQuery.fn.outerHTML = function(s) {
    return this[0].outerHTML ? this[0].outerHTML :
           s ? this.before(s).remove()
             : jQuery("<p>").append(this.eq(0).clone()).html();
};

var outer = $("#1").outerHTML();

Be aware though that there are a few cross-browser inconsistencies in outerHTML (e.g look at this page in chrome and compare with ie)

凉月流沐 2025-01-10 10:34:41

您可以将所需的 div 包装在另一个 div 中,然后获取父 div 的 html。

<div><div id="1" style="qwe"><span class="1"></span></div></div>
<div><div id="2" style="asd"><span class="2"></span></div></div>
<div><div id="3" style="zxc"><span class="3"></span></div></div>

现在,

$("#1").parent().html() 将获取所需的字符串。

You can wrap the desired div in another div and then fetch the parent div's html.

<div><div id="1" style="qwe"><span class="1"></span></div></div>
<div><div id="2" style="asd"><span class="2"></span></div></div>
<div><div id="3" style="zxc"><span class="3"></span></div></div>

Now,

$("#1").parent().html() will fetch the desired string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文