Самый простой / самый элегантный подход - это объединить ваш список стран $(this).find('country')
в массив массивов фиксированной длины.
Затем вложите пару циклов для итерации массивов, создавая список длякаждый массив.
РЕДАКТИРОВАТЬ: Таким образом, ваш код создал кучу элементов в одном списке, как это было.Что вам нужно сделать, это выяснить, когда происходит каждый 20-й элемент, самый простой способ - разбить массив, что-то вроде этого.
$(document).ready(function() {
$.ajax({
type: "GET",
url: "lang-select.xml",
dataType: "xml",
success: function(xml) {
var countriesList = $('div.countries ul');
var countriesListItems = [];
$(xml).find('dropdown').each(function(){
$(this).find('country').each(function(){
var url = $(this).attr('url');
var label = $(this).text();
var listItem = $("<li><a href='"+ url +"' style='background-image: url(images/flags/" + label.replace(/ /g,'').toLowerCase() + ".jpg);'>" + label + "</a></li>");
countriesListItems.push(listItem);
});
});
var chunkedCountriesListItems = chunk(countriesListItems, 20);
var currentList = countriesList;
$.each(chunkedCountriesListItems, function() {
$.each(this, function() {
currentList.append(this);
});
countriesList.after(currentList);
currentList = $('<ul />');
});
}
});
function chunk(arr, len){
for(var x, i = 0, c = -1, l = arr.length, n = []; i < l; i++)
(x = i % len) ? n[c][x] = arr[i] : n[++c] = [arr[i]];
return n;
}