2011-11-24 6 views
13

"अपडेट" कॉलबैक पर आप $(this).sortable('toArray');jQuery क्रमबद्ध में कस्टम डेटा?

के साथ तत्वों का ऑर्डर प्राप्त कर सकते हैं लेकिन इस क्रम में तत्व आईडी हैं।

मैं data-myattr जैसे कस्टम विशेषता कैसे प्राप्त कर सकता हूं? मैं आईडी के बजाय इस attibute से मूल्यों को शामिल करने के लिए है कि आदेश चाहते हैं ....

$('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); 

     .... 

    } 
    }); 

एचटीएमएल सरल है:

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

यह शायद एक jQuery यूआई सुविधा अनुरोध होना चाहिए ... –

+0

ठीक है, मैंने कोड पढ़ा है और यह वास्तव में अब लागू हुआ है! कृपया नीचे मेरा जवाब ऊपर उठाओ। –

उत्तर

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

धन्यवाद यह काम करता है, लेकिन arr.length - 1 क्यों? मुझे उस अंतिम तत्व की भी आवश्यकता है :) – Alex

+0

मुझे लगता है कि मेरे जेएसबीन स्क्रिप्ट में एक डमी तत्व था - मैंने इसे हटा दिया है। –

+1

केवल नकारात्मक पक्ष यह है कि यदि आपके पास तत्वों पर कोई आईडी विशेषता नहीं है तो यह कोई काम नहीं करेगा :) – KnF

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

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

जे एस फिडल here

+1

मैंने जो पूछा उससे संबंधित नहीं है :) – Alex

+1

@Alper मुझे उम्मीद है कि आप कभी भी 'डेटा' का उपयोग किसी भी प्रकार की सलाह नहीं देंगे ... जैसा कि आप इस यूनिट परीक्षण (http://jsperf.com/jquery-data-vs) पर देख सकते हैं -jqueryselection-data/8) डेटा धीमा है ... प्रोप का उपयोग करें क्योंकि यह तेज़ है (या देशी जेएस जो भी तेज है)। – HellBaby

32

के रूप में अगस्त 12 के, यह सीधे jQuery यूआई में लागू किया गया है:

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

यह वास्तव में काम कर रहा है !! धन्यवाद! – KnF