<ul>
에 일부 <li>
개의 요소를 추가하고 있습니다. 되는 listItem의 클릭과의 ContextMenu 이벤트가 성공적으로이 예에서 CONSOLE.LOG에 기록jQuery 이벤트 처리를 유지하면서 대량 항목을 DOM에 추가 하시겠습니까?
var playlistItemListUl = $('#PlaylistItemList ul');
for(var i = 0; i < 1000; i++){
var listItem = $('<li/>', {
'data-itemid': item.get('id'),
contextmenu: function (event) {
console.log('contextmenu', event);
},
click: function(event){
console.log('click', event);
}
});
listItem.appendTo(playlistItemListUl);
}
:
이전에, 내가 좋아하는 일을하고 있었다. 그러나, 그것은 고통스럽게 느리고 벌크 - 추가에서 유도 지연을 줄이기 위해 싶었어요. 그래서, 난 그냥 하나의 DOM 수정이 발생하는 코드를 재 작성 :
var playlistItemListUl = $('#PlaylistItemList ul');
var listItemsOuterHtml = [];
for(var i = 0; i < 1000; i++){
var listItem = $('<li/>', {
'data-itemid': item.get('id'),
contextmenu: function (event) {
console.log('contextmenu', event);
},
click: function(event){
console.log('click', event);
}
});
listItemsOuterHtml.push(listItem.prop('outerHTML'));
}
playlistItemListUl.append(listItemsOuterHtml.join(''));
이 필요 DOM 조작의 수를 감소,하지만 내 잘 결합의 jQuery 모든 이벤트는 삭제됩니다.
HTML을 손으로 직접 만드는 대신 jQuery를 사용하여 노드를 만들 수 있지만 불필요한 DOM 삽입을 피할 수있는 효과적인 두 가지 스타일이 중간에 있습니까?
오, 좋은 생각입니다. Derp. 더 많은 커피가 필요해! –