Полагаю, ваш ответ выглядит примерно так ...
var data = [{
"event": "Birthday"
"name": "John Doe",
"city": "Sunnyvale",
"date": "04/07/1982"
},{
...
}]
Если вы используете $('<div />')
или $('<div></div>')
для создания новых элементов, jQuery будет использовать регулярное выражение перед созданием элемента, что по понятным причинам замедлит вас, если вы работаете с большими наборами данных.
Для использования производительности:
var div = $(document.createElement('div'));
or keep it simple...
var div = document.createElement('div');
Для производительности используйте стандартный цикл, а не $ .each, и кешируйте длину:
var container = $("#event_data");
for(var i = 0, k = data.length; i < k; i++){
var event = $(document.createElement('div')),
name = $(document.createElement('span')),
city = $(document.createElement('span')),
date = $(document.createElement('span'));
// add id to event wrapper, if undefined generate random ID to avoid conflicts
event.attr('id', 'event_'+data[i].event || Math.floor(Math.random()*100));
// add each item, if undefined then insert empty text
name.text(data[i].name || "").appendTo(event);
city.text(data[i].city || "").appendTo(event);
date.text(data[i].date || "").appendTo(event);
// append & appendTo do exactly the same thing, markup preference
container.append(event);
}
Если вы используете text (), значение будет обрабатываться как только это, только текст, и не будет выполняться . Если вы используете html () , у вас будут проблемы с XSS .
Надеюсь, это поможет и то, что вы ищете.