2013-10-02 5 views
2

Насколько я знаю, jQuery UI Sortable считывает только один указанный атрибут для сериализации или генерации выходного массива, но хочу, чтобы я действительно хотел получить несколько атрибутов и объединить их в одну строку вывода (либо сериализован, либо массивом).Извлечение нескольких атрибутов с помощью сортировки jQuery

Вот мой HTML пример:

<ul id="sort"> 
<li data-color="red" data-size="small">apple</li> 
<li data-color="yellow" data-size="medium">banana</li> 
<li data-color="green" data-size="big">watermelon</li> 
</ul> 

Мне нужно выводить значения двух данных-атрибутов. Как я могу это сделать?

Я пытался сделать что-то вроде этого:

$(function() { 
$('#sort').sortable().disableSelection(); 
$("#sort").on("sortupdate", function(event, ui) { 
    var output = $(this).sortable("toArray", { 
     attribute: {"data-color", "data-size"} 
    }); 
    //do something 
}); 
}); 

Но это не работает, я думаю, потому что attribute не поддерживает массив в качестве значения.

ответ

2

Как насчет map() поместить значения в массиве:

$("#sort").on("sortupdate", function(event, ui) { 
    dataArray = $.map($(this).children('li'), function(el){ 
     return {'color':$(el).data('color'), 'size':$(el).data('size')}; 
    }); 
}); 

JSFiddle

Смежные вопросы