Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery и innerHTML() (https://javascript.ru/forum/jquery/12600-jquery-i-innerhtml.html)

hrundel 25.10.2010 17:07

jQuery и innerHTML()
 
Я пока не знаю достаточно хорошо фреймворк jQuery, но при знакомстве с ним появился такой вопрос.
Есть такой метод html(), который позволяет добавить на страницу новые теги. Вот пример:
Код:

$("h1#firstHeading").html('<p>hello </p>');
А это не является ли примитивной реализацией метода javascript innerHTML(), который является мягко говоря устаревающим и его использование не рекомендуется? Также при изучении мануалов нашёл функцию append(), позволяющую вставить произвольный текст в конец тега. Есть ли другие методы для корректного вставления тега (и текста) в страницу с использованием jQuery?
Если jQuery так отстойно делает вставку тегов, может его вообще не стоит применять в своих проектах?

exec 25.10.2010 17:44

Не знаю, где Вы начитались всего этого бреда, но:

1. jQuery — библиотека, а не фреймворк.
2. innerHTML — свойство, а не метод.
3. innerHTML — вполне нормальный способ добавлять элементы, зачастую более быстрый, чем DOM-методы. И конечный результат тот же самый.

B@rmaley.e><e 25.10.2010 19:40

Цитата:

Сообщение от hrundel
А это не является ли примитивной реализацией метода javascript innerHTML(), который является мягко говоря устаревающим и его использование не рекомендуется?

О_о
innerHTML это, вообще говоря, не стандарт. Но есть во всех браузерах, и активно используется.

FreeStyler 12.01.2011 19:07

Нормальный innerHTML
Попутно вопрос как сделать на jQuery так
elem.innerHTML += '<p>test!</p>'

demon_666_902 21.03.2013 13:04

Цитата:

Сообщение от FreeStyler (Сообщение 87726)
Нормальный innerHTML
Попутно вопрос как сделать на jQuery так
elem.innerHTML += '<p>test!</p>'

var oldHtml = $(elem).html();
$(elem).html(oldHtml + addValue);

danik.js 21.03.2013 14:06

Цитата:

Сообщение от demon_666_902
var oldHtml = $(elem).html();
$(elem).html(oldHtml + addValue);

Самый неоптимальный и потенциально опасный вариант.

Полагаю в jQuery используется что-то вроде этого:
$(elem)[0].insertAdjacentHTML('beforeend', html);

Keeper 21.03.2013 14:16

А про .after( content [, content ] ) или .insertAfter() все забыли?

http://api.jquery.com/after/

danik.js 21.03.2013 14:38

Так ведь after вставляет контент после элемента, а не в конце него. Тогда уж .append.
Цитата:

Сообщение от danik.js
Полагаю в jQuery используется что-то вроде этого:

Тут я имел ввиду внутренности jQuery. Ща глянул - там не используется этот метод вообще. Так что если нужна производительность - .append не годится.

Keeper 21.03.2013 14:48

Простите за невнимательность, да, append (appendTo)...

KudenkovR 25.04.2013 14:35

Вопрос - если использовать innerHTML() вместо html(), получится ли повысить производительность или это лишние заморочки?
Я заметил, что при добавлении таблицы через html() в DOM добавляются элементы, которые я не прописывал в код - <tbody> и <colgroup>. Это значит, что метод html() просматривает добавляемую строку на валидность. Происходит ли то же самое при добавлении содержимого через innerHTML()?


Часовой пояс GMT +3, время: 02:23.