Пользовательские данные в jQuery сортируются?
в обратном вызове "update" вы можете получить порядок элементов с помощью $(this).sortable('toArray');
Но этот порядок содержит идентификаторы элементов.
Как получить пользовательский атрибут, например data-myattr
? Я хочу, чтобы этот заказ содержал значения из этого атрибута вместо идентификаторов....
$('ul').sortable({
handle: 'h2'
items: 'li',
context: this,
update: function(){
var order = $(this).sortable('toArray');
// here I want a array of values from my attribute, not ID values...
alert(order);
....
}
});
HTML прост:
<ul>
<li data-myattr="a-1" id="whatever">
...
</li>
...
Ответы
Ответ 1
$("ul").sortable({
.
.
.
update: function(event, ui) {
var arr = $(this).sortable('toArray');
var i, n;
var attrs = [];
for (i = 0, n = arr.length; i < n; i++) {
attrs.push($('#' + arr[i]).data('myattr'));
}
alert(attrs);
}
});
Ответ 2
Начиная с августа '12, это реализовано непосредственно в интерфейсе jQuery:
var order = $(this).sortable('toArray', {attribute: 'data-myattr'});
Ответ 3
$("li").data("myattr") // if you use jQuery, >= 1.4.3
$("li").attr("data-myattr") // for erlier
JS Fiddle здесь