jQuery选择器返回的对象的完整HTML

jQuery选择器返回的对象的完整HTML,jquery,jquery-selectors,Jquery,Jquery Selectors,鉴于此html: <li id="the_list_item"><img src="some_img"></li> 我想从jQuery选择器返回的对象中获取完整的html 使用: $("#the_list_item").html() …只给我内部html(代码部分) 但由于: $("#the_list_item").attr("id") 给我“列表项”,这表示整个列表项确实包含在返回的对象中。。那么如何从该对象获取完整的代码呢 我想从我的对象中获取字符串

鉴于此html:

<li id="the_list_item"><img src="some_img"></li>
我想从jQuery选择器返回的对象中获取完整的html

使用:

$("#the_list_item").html()
…只给我内部html(代码部分)

但由于:

$("#the_list_item").attr("id")
给我“列表项”,这表示整个列表项确实包含在返回的对象中。。那么如何从该对象获取完整的代码呢


我想从我的对象中获取字符串:
  • ,但找不到方法。

    您是否尝试过
    $(“_list_item”).parent().html()

    我不确定这是否有效,但可能值得一试:

    var html = $('#the_list_item')[0].outerHTML;
    alert(html);
    
    var html=$('#列表项“)[0];
    log(html)
    
    
    
    jQuery中没有“外部html”等价物,但这可能会有所帮助:

    有用于此的插件。只需谷歌搜索“jqueryouterhtml”。大多数方法背后的想法是克隆元素,将其附加到一个空div,并获取该div的html。

    在这里,您可以通过jQuery outerHtml插件的代码形式找到一个很好的解决方案:

    一种方法是创建您自己的包装器:

    $("#the_list_item").wrap('<div>').parent().html();
    

    不幸的是,outerHTML解决方案(上面接受的解决方案)在Firefox9/Windows7/jQuery1.7上不适用于我

    根据契坦·萨斯特里(Chetan Sastry)(上面的答案)的说法,这里有一些对我有用的东西:

    var el=jQuery(“#列表项”).first();
    var outerHtml=jQuery(“”).append(el.html();
    
    创建一个新的div DOM对象并附加一个div克隆,然后获取包装的div的内容,最后删除创建的DOM对象

    var html = $('<div>').append($('#the_list_item').clone()).remove().html();
    
    var html=$('').append($('.#列表项').clone()).remove().html();
    
    这里是我的解决方案,不需要jQuery

    // Get a reference to the element by its ID.
    var oEl = document.getElementById('the_list_item');
    // Getting the outerHTML of an element:
    var sOuterHTML = oEl.outerHTML;
     alert( sOuterHTML );
    
    或者,可以通过jQuery获取元素的引用,然后获取outerHTML

    var sOuterHTML = $('#the_list_item')[0].outerHTML;
    alert( sOuterHTML );
    // or
    var  sOuterHTML = $('#the_list_item').get(0).outerHTML;
    alert( sOuterHTML );
    

    离开,以防万一现在有人还在找这个。
    完整jQuery解决方案:


    仅当父元素只有此元素而没有其他元素时才有效。这很优雅。。它能在所有浏览器中工作吗?它在Safari中起作用。我发现将对象(在我的例子中是jqueryui.draggable)转储到Safari开发控制台:console.log(ui.draggable);显示了这个jQuery对象的总体框架,它看起来像一个数组(尽管它是一个对象),并且它在索引0处有一个类似于另一个对象的东西,该对象有一个outerHTML属性,该属性保存整个html字符串。。是的,使用$(“#the#u list_item”)[0].outerHTML,或者在我的例子中使用ui.draggable[0].outerHTML RTURN,这正是我想要的。我已经更改了接受的答案,因为这个答案具有更好的跨浏览器兼容性,尽管这是一种糟糕的黑客方法。。但这似乎是大多数人都同意的方法。如果您想避免以任何方式影响原始元素,可以在包装之前对其进行克隆:
    $(“#the#u list_item”).clone().wrap(“”).parent().html()
    @tobuslieven自从我写下最初的答案,我一般会在这一点上推荐outerHTML以来的五年里,事情已经发生了很大的变化,正如下面Tatu Ulmanen的答案所示。(). 和往常一样,需要注意的是IE,特别是IE8,因此如果您必须支持旧的IE,您仍然需要像上面一样的包装方法。如果可以使用outerHTML,它是最好和最干净的解决方案。但是,它在IE8/9中没有得到充分的支持。在我写这个问题的时候,我需要这个。
    var html = $('<div>').append($('#the_list_item').clone()).remove().html();
    
    // Get a reference to the element by its ID.
    var oEl = document.getElementById('the_list_item');
    // Getting the outerHTML of an element:
    var sOuterHTML = oEl.outerHTML;
     alert( sOuterHTML );
    
    var sOuterHTML = $('#the_list_item')[0].outerHTML;
    alert( sOuterHTML );
    // or
    var  sOuterHTML = $('#the_list_item').get(0).outerHTML;
    alert( sOuterHTML );
    
    $('#the_list_item').prop('outerHTML');