سؤال

هذا قد حظي. إرجاع التعليمات البرمجية التالية "،،،،،،":

<script type="text/javascript">
$(function() {
    $('#listB').sortable({
        connectWith: '#listA',
        update: function(event, ui) {
            var result = $(this).sortable('toArray');
            alert(result);
            }
    });
    $('#listA').sortable({
        connectWith: '#listB'
    });
});
</script>

<div id="boxA">
    <ul id="listA" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

<div id="boxB">
    <ul id="listB" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

لماذا؟! انها تقودني مجنون! أي اقتراحات؟

هل كانت مفيدة؟

المحلول

.sortable('toArray') تسلسل العناصر Ids في صفيف، وعناصرك ليس لديها أي معرفات، ولهذا السبب لديك سلاسل فارغة.

نصائح أخرى

يمكنك تحديد السمة التي تجلبها مثل هذا:

var result = $(this).sortable('toArray', {attribute: 'value'});

كنت أحصل على هذه المشكلة كذلك، إلا أنني لم يكن لدي معرف على عناصري، وكان JQuery's Sortable ("Toarray" ("Toarray") قد تضغط للغاية على إرجاع المعرفات، ومع ذلك، يمكنك الاستيلاء عليها في JavaScript باستخدام هذا:

function getSortOrder() {
    var children = document.getElementById('sortedElement').childNodes;
    var sort = "";
    for (x in children) {
        sort = sort + children[x].id + ",";
    }
    return sort;
}

يؤدي هذا بالطبع إلى إرجاع المعرف في سلسلة محددة بفاصلة ولكن يمكنك إرجاع الصفيف. أنا متأكد من أن هناك طريقة أفضل لحل هذه المشكلة، وهذا هو الحل فقط.

أرى بعض إجابات جافا سكريبت بحتة. إنهم يعملون إلا وهم يحذرون، قد لا يرجعون العناصر بالترتيب المرئي على الشاشة. باستخدام الكود أدناه، راجع JTSALVA أعلاه، سيعود العناصر الموجودة في الترتيب المناسب. هذا قد حظني لفترة من الوقت لأنني أردت حفظ الطلب الجديد إلى قاعدة بيانات، لذلك يمكنني إعادة تحميل الشبكة حيث توقف شخص ما.

var result = $(this).sortable('toArray', {attribute: 'value'});

لاستخدام سمة أخرى يمكنك القيام بذلك:

$('#element').sortable('toArray' {attribute: 'value'})

هذا سيجعل ذلك يستخدم الآن السمة "قيمة" من التعليمات البرمجية الخاصة بك.

الوثائق حول طريقة ToArray

إذا قام التسلسل بإرجاع سلسلة فارغة، فتأكد من أن سمات الهوية تتضمن تحت إشراك الشرطة السفلية. يجب أن تكون في النموذج: "set_number" على سبيل المثال، قائمة 3 عناصر مع سمات المعرف "foo_1"، "foo_5"، سوف تسلسل "foo_2" إلى "foo [] = 1 & foo [] = 5 & foo [] = 2". يمكنك استخدام السفلات السطرية أو الواصلة المساوية لفصل المجموعة والعدد. على سبيل المثال "foo = 1"، "foo-1"، و "foo_1" جميع التسلسل إلى "foo [] = 1".

JQ مرجع قابلي

$ ('. قابل للفرز'). قابل للفرز ("TOARRAY")؛ سوف تحليل العنصر الأول فقط من الفصل قابل للفرز. وبعد يمكنك تحليل جميع العناصر باستخدام كل:

$('.sortable').each(function(){
    result.push($(this).sortable('toArray'));
})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top