Подтвердить что ты не робот

JQuery получает элемент DOM как строку

Скажем, у меня

$(":input[type=text]:first")

Как мне получить

<input type="text" value="" size="28" maxlength="140" tabindex="1" placeholder="search" class="textbox" name="q" autocomplete="off">

Предполагая, что я запускаю это на SO?

Обновить Я не хочу вызывать .parent(), так как у меня есть много других вещей в родительском элементе.

4b9b3361

Ответ 1

Старый трюк:

var selector = ":input[type=text]:first";

var str = $(selector).clone().wrap('<div/>').parent().html();

Обновить. Вам не нужно беспокоиться о вызове .parent(), поскольку вы работаете с потерянным клонов исходного селектора.

Ответ 2

Как насчет

$(selector).prop("outerHTML");

Ответ 3

Используйте jQuery.html() путем добавления к созданному элементу.

$('<div/>').append($(":input[type=text]:first").clone()).html()

Вот скрипка, в которой приведен пример: http://jsfiddle.net/Zwbmx/1/

Ответ 4

Следуя тому, что ответил @Blazemonger, если вы собираетесь отправить этот html-контент на сервер, стоит избавиться от всех ненужных тегов, пробелов и разрывов строк, которые не добавляют никакого значения.

var quote = $(".invoice") //get hidden print-version DOM element
    .clone()
    .wrap('<div/>')
    .parent()
    .html()
    .replace(/    /g, '') //get rid of indentation spaces
    .replace(/(\r\n|\n|\r)/gm, "") //get rid of line breaks
    .replace(/<!--[\s\S]*?-->/g, ""); //get rid of comment tags

Мой html имел 50kb, после избавления от этого материала он был уменьшен до 4kb!

Ответ 5

Как насчет:

var str = $(selector)[0]

Возможно, добавьте проверку, что есть один элемент.