Вопрос: В jQuery есть ли какая-либо функция, похожая на html () или text (), но возвращает все содержимое согласованного компонента?


Например, если совпадение <div class="class1">Hello world</div>, Мне нужно вернуться

<div class="class1">Hello world</div>

а не просто «Hello world».

Благодаря!


9


источник


Ответы:


Для получения внешнего HTTML нет встроенной функции, но вы можете использовать это:

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

Затем в вашем селекторе:
$('.class1').outerHTML() даст вам то, что вы ищете.

Источник функции


19



Проверьте это внешнийHTML-плагин ,


3



@Jose Basilio ответ  отлично. Но Брайан Гринстед обнаружил проблему в этой функции при использовании IFrames: http://www.briangrinstead.com/blog/jquery-outerhtml-snippet

Здесь я собрал путь Хосе для установка внешнего HTTML  с решением Брайана для IFrames :

jQuery.fn.outerHTML = function(s) {
    if (s) {
        return this.before(s).remove();
    } else {
        var doc = this[0] ? this[0].ownerDocument : document;
        return jQuery('<div>', doc).append(this.eq(0).clone()).html();
    }
}

3



Я использовал .andSelf () с успехом:

http://api.jquery.com/andSelf/


1