2011-11-24 23 views
13

"update" geri bildirimi üzerinde $(this).sortable('toArray');jQuery sortable'daki özel veriler?

öğelerinin sırasını alabilirsiniz, ancak bu sıra öğe kimliklerini içerir.

data-myattr gibi özel bir özellik nasıl edinilir? here

+0

Bu, muhtemelen bir jQuery UI özellik talebi olmalıdır ... –

+0

Tamam, kodu okudum ve aslında uygulandı! Lütfen cevabımı aşağıya yazınız. –

cevap

3
$("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); 
    } 
}); 
+1

teşekkürler, ama neden arr.length - 1? Bu son öğeye de ihtiyacım var :) – Alex

+0

JSBin betiğimde kukla bir öğe olduğunu düşünüyorum - onu kaldırdım. –

+1

sadece olumsuz yanı eğer hiçbir ID özniteliğine sahip değilseniz bu işe yaramaz :) – KnF

0
$("li").data("myattr") // if you use jQuery, >= 1.4.3 

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

JS Fiddle: Ben

$('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 basittir .... yerine kimlikleri bu attibute değerleri içerecek şekilde bu emri istiyorum Ağustos '12, bu doğrudan jQuery kullanıcı arayüzünde uygulanır:

var order = $(this).sortable('toArray', {attribute: 'data-myattr'}); 
+1

İstediğim şeyle ilgili değil :) – Alex

+1

@Alper Bu ünite testinde görebildiğiniz gibi, hiç bir zaman 'veriyi kullanmamanızı' tavsiye edemeyeceğinizi umuyorum (http://jsperf.com/jquery-data-vs -yöntel seçim verileri/8) veriler yavaştır ... prop kullanması daha hızlıdır (veya daha hızlı olan yerel j'ler). – HellBaby

32

Farklı

<ul> 
    <li data-myattr="a-1" id="whatever"> 
    ... 
    </li> 
    ... 
+0

bu gerçekten çalışıyor! Teşekkürler! – KnF