Получить строковое представление всего HTML-кода объекта DOM jquery - PullRequest
7 голосов
/ 07 июня 2010

Я немного осмотрелся и у меня возникли трудности с решением проблемы, с которой я столкнулся.

У меня в основном есть строка HTML, я преобразую ее в объект DOM JQuery, чтобы яможет легко удалить все элементы, которые имеют определенный класс, используя .remove () JQuery.Т.е.

var radHtml = editor.get_html();

var jqDom = $(radHtml);

$(".thickbox", jqDom).remove();
$(".thickboxcontent", jqDom).remove();

editor.set_html(this.innerHTML);

ПРИМЕЧАНИЕ. HTML-код получен из содержимого в текстовом редакторе RADEditor, поэтому родительские теги HTML отсутствуют, поэтому он может выглядеть следующим образом:

<p>This is a header</p>
<p>this is some content followed by a table </p>
<a href="#TB_inline?height=350&amp;width=400&amp;inlineId=myOnPageContent0" class="thickbox">Test Thickbox</a>
<div id="myOnPageContent0" class="thickboxcontent">
<table class="modal">
    <thead>
    </thead>
    <tbody>
        <tr>
            <td>item</td>
            <td>result</td>
        </tr>
        <tr>
            <td>item 1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>item 2</td>
            <td>2</td>
        </tr>
        <tr>
            <td>item 3</td>
            <td>3</td>
        </tr>
    </tbody>
</table>
</div>

Вот чтоjqDom.html () возвращает из HTML выше:

"This is a header"

Мне было интересно, если бы был простой способ сделать это - иметь немного HTML и удалить все элементы (в данном случае div), которые имеютопределенный класс (но оставляя их содержимое).JQuery не нужно использовать, но я бы хотел.

Манипулировать объектом DOM хорошо - он получает весь объект DOM целиком в виде строки, с которой у меня возникла проблема.

Любая помощь будет очень оценена.Благодаря.

Ответы [ 2 ]

5 голосов
/ 07 июня 2010

Если вы хотите, чтобы html каждого соответствующего элемента был выбран в вашем селекторе, попробуйте сделать map:

var allHtmls = jqDom.find('.thickbox').map(function(){ 
  return this.innerHTML; 
});

Кроме того, может показаться, что вы захотите использовать unwrap, который был добавлен в jQuery 1.4+ (http://api.jquery.com/unwrap/)

jqDom.find('.thickbox').children().unwrap();

1 голос
/ 11 июня 2010
var radHtml = editor.get_html();

var jqDom = $(radHtml);
jqDom.wrap('div'); //dont remember if thats ok or u need to asign it in the jqDom again
$(".thickbox", jqDom).remove();
$(".thickboxcontent", jqDom).remove();

editor.set_html(jqDom.html());

Может быть, это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...