Лучший способ создания новых элементов DOM
С помощью jquery лучше создать элемент DOM следующим образом: -
function create(options)
{
$('<form action="' + options.action + '"></form>');
}
Или вот так:
function create(options)
{
$form = $('<form></form>');
$form.attr('action',options.action);
}
Это может быть вопросом мнения. Я чувствую, что второй способ дает больше ясности, но я подозреваю, что он менее эффективен...
Ответы
Ответ 1
jQuery может создать объект как следующий код
$form = $('<form>', {action: 'my action'});
class
является зарезервированным словом в IE и нуждается в цитировании. Полный список зарезервированных слов: Зарезервированные ключевые слова в Javascript
Ответ 2
Проверьте это, чтобы узнать о себе.
Заметьте, что выше лучше (OPS/Sec = операции в секунду = сколько раз в секунду выполняется данный код)
И победитель теста в любом другом браузере, чем Opera:
var form = document.createElement("form"),
$form = $(form);
form.action = options.action;
Примечание:
собственный метод будет еще быстрее, если вам не нужен объект jQuery:
var form = document.createElement("form");
form.action = options.action;
Ответ 3
Я всегда делаю второй.
function create(options)
{
$form = $('<form></form>');
$form.attr('action',options.action);
}
Я предпочитаю этот метод просто потому, что он находит его более читаемым.
Ответ 4
Никогда не бойтесь оптимизировать... пока это не произойдет... вы можете использовать прямо JS:
function create(options)
{
var newform = document.createElement('form');
newform.setAttribute('action',options.action);
}
Помимо того, что это ничтожно, как упоминалось выше, все, что вам легче читать... т.е. вариант 2
Ответ 5
Если вы не выполняете эту функцию много раз, любая разница в производительности будет незначительной. Таким образом, я всегда бывал с самым ясным, самым простым для обновления решением (т.е. Вторым).
Ответ 6
Не уверен в фактическом подчеркивании кода jquery и не может определить, какая из них имеет лучшую производительность.
В любом случае, как я могу себе представить, в первом случае jquery все равно будет анализировать атрибуты и задавать для них значения, поэтому не должно быть большой разницы в производительности.
Итак, я думаю, что первое решение более удобно, если оно содержит много html-кода, иначе я предпочту второй.