Пользовательские данные в jQuery сортируются? - PullRequest
14 голосов
/ 24 ноября 2011

при обратном вызове "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>
  ...

Ответы [ 3 ]

36 голосов
/ 06 августа 2012

По состоянию на август 12 года это реализовано непосредственно в пользовательском интерфейсе jQuery:

var order = $(this).sortable('toArray', {attribute: 'data-myattr'});
4 голосов
/ 24 ноября 2011
$("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);  
  }
});
0 голосов
/ 24 ноября 2011
$("li").data("myattr") // if you use jQuery, >= 1.4.3

$("li").attr("data-myattr") // for erlier

JS Fiddle здесь

...