Эквивалент document.createElement в jQuery?
Я рефакторю старый JavaScript код, и в нем много манипуляций с DOM.
var d = document;
var odv = d.createElement("div");
odv.style.display = "none";
this.OuterDiv = odv;
var t = d.createElement("table");
t.cellSpacing = 0;
t.className = "text";
odv.appendChild(t);
Я хотел бы узнать, есть ли более эффективный способ сделать это с использованием jQuery. Я пробовал следующие методы:
var odv = $.create("div");
$.append(odv);
// И многие другие
Но не уверен, действительно ли это лучше.
5 ответ(ов)
Просто передав HTML элемента, который вы хотите добавить, в конструктор jQuery $(), вы получите объект jQuery из новосозданного HTML, который можно добавить в DOM с помощью метода append().
Например:
var t = $("<table cellspacing='0' class='text'></table>");
$.append(t);
Затем вы можете программно заполнить эту таблицу, если хотите.
Это дает вам возможность указывать произвольный HTML, включая имена классов и другие атрибуты, что может оказаться более лаконичным по сравнению с использованием createElement, а затем установки атрибутов, таких как cellSpacing и className, через JavaScript.
Вы можете создать и добавить элемент <div> с текстом и классом к родительскому элементу (#parentDiv) с помощью jQuery следующим образом:
$('<div/>', {
text: 'Текст для див',
class: 'className'
}).appendTo('#parentDiv');
В этом коде мы используем метод $('<div/>', {...}), чтобы создать новый элемент <div>, устанавливаем его текст с помощью свойства text, добавляем класс с помощью свойства class, а затем добавляем его в родительский элемент с помощью метода appendTo().
Создание новых элементов DOM является основной функцией метода jQuery(). Вы можете ознакомиться с документацией по следующим ссылкам:
- Создание новых элементов в jQuery
- Особенно рекомендую обратить внимание на пример 1.1, который наглядно демонстрирует, как это делается.
Обновление
На последних версиях jQuery указанный метод не присваивает свойства, переданные во втором объекте.
Предыдущий ответ
Я считаю, что использование document.createElement('div') вместе с jQuery быстрее:
$(document.createElement('div'), {
text: 'Div text',
'class': 'className'
}).appendTo('#parentDiv');
Если вы хотите задать свойства в создаваемом элементе через jQuery, правильным подходом будет использовать метод .attr() или .addClass(). Например, вы можете сделать это так:
$('<div>', {
text: 'Div text',
class: 'className'
}).appendTo('#parentDiv');
Этот код создаст новый <div> с заданным текстом и классом, и добавит его в элемент с id="parentDiv".
Для создания нового элемента <div> с помощью jQuery вы можете использовать следующий код:
var mydiv = $('<div />'); // также работает
Этот код создает новый элемент <div> и сохраняет его в переменной mydiv. Вы можете затем манипулировать этим элементом, добавлять в него содержимое или вставлять его в DOM.
Как выбрать элемент по имени с помощью jQuery?
Потеряно HTML-кодирование при чтении атрибута из поля ввода
jQuery/JavaScript: Замена битых изображений
Предварительный просмотр изображений перед загрузкой
Как выполнить код после сброса HTML-формы с помощью jQuery?