JQuery sıralanabilir kullanarak sıralama sonra üst kapsayıcı kimliği almak nasıl?

3 Cevap php

Ben bazı öğeleri sıralamak için biçimlendirme ve javascript şu var. Öğeler bir blok içinde ya da diğer bloklar arasında sıralanabilir. Bu çalışıyor ama bir öğe başka bir blok taşındıktan sonra ben doğru blok kimliği alınırken bir sorun var.

Ben "Blok 1" içinde öğe 1 taşırsanız Örneğin, ben "I Blok = block_1 duyuyorum" olsun ama ben Blok 2 Öğe 1 taşırsanız ben hala Blok 1 duyuyorum olsun.

Ama üst kapsayıcı olarak blok 2 yapmak istiyorum. Ben bazı ajax yapmak ve buna göre db güncelleyebilirsiniz böylece bu kimliği almak gerekir.

Can you please help me correct this??

<div id="blocks_sortable">
    <div id="block_1">
        <h2>Block 1</h2>

        <div class="items_sortable connectedSortable">
            <div id="item_1"> 
                <span>Item 1</span></div>   
            <div id="item_2"> 
                <span>Item 2</span></div>
            <div id="item_3"> 
                <span>Item 3</span></div>
        </div>
    </div>  
    <div id="block_2">
        <h2>Block 2</h2>

        <div class="items_sortable connectedSortable">
            <div id="item_4"> 
                <span>Item 4</span></div>   
            <div id="item_5"> 
                <span>Item 5</span></div>
            <div id="item_6"> 
                <span>Item 6</span></div>
        </div>
    </div>
</div>

<script>
$("#blocks_sortable").sortable({ });
$(".items_sortable").sortable({
     connectWith: '.connectedSortable'
    , forcePlaceholderSize: true
    ,         stop : function(event, ui){
                    alert("I am in block = "+$(this).parent().attr("id"));
                }
}).disableSelection();      
</script>

Teşekkür ederim.

3 Cevap

Ben sorun yanlış olayı kullanarak şüpheli. Temelde ne oluyor düşünüyorum durdurma olayı çok yakında ateş veya yanlış nesne olmasıdır.

Ben docs Here üzerinden okumak ve yapmak için çalışıyoruz ne için daha uygun bir olay olup olmadığını görmek istiyorum.

Ben ne istiyorum "güncelleme" veya "devre dışı bırakmak" olayları gibi bir şey olduğunu düşünüyorum.

Eğer diğer bir "blok" bir öğeyi taşırsanız, bu olayların her ikisi de her bir "blok" için bir kez patlayacaktır.

Bir blok içinde hareket ederse Güncelleme sadece bir kez ateş edecek

Devre dışı bırakmak her zaman tüm bloklar için ateş olacaktır.

Olay ui.sender denetleyerek "orijinal olmayan" blokta ateş ise güncelleme ile kontrol edebilirsiniz:

        $(".items_sortable").sortable({
            connectWith: '.connectedSortable',
            forcePlaceholderSize: true,
            update: function(event, ui){
                if(ui.sender){
                    alert(ui.item.attr("nodeName") + "  in block = " + 
                    $(this).parent().attr("id"));
                }
            }
        }).disableSelection(); 

Bir öğeyi başka bir bloğa taşınır SADECE ebeveyn kimliği uyaracaktır. Olay hem bloklar için ateş edecek, ancak uyarı sadece "orijinal olmayan" biri için gösterecektir.

Bir DB bilgi güncellemek için AJAX kullanarak ediyorsanız ben ne istiyorum hem bloklar için yangın olay olduğunu sanıyorum:

Bir zamanlar şimdi bir öğe eksik olduğu "orijinal", ve şimdi bir eleman kazanmış olan "yeni" için biri için.

Ben ne yaptığınızı veya jQuery UI tam olarak ne çok aşina değilim, bu yüzden daha belirli olamaz. Unutmayın, docs arkadaşınız vardır.

Umarım bu yardımcı olur.

belki onun daha iyi yerine kimliği kullanarak kendi dizinini kullanarak unsurları tanımlamak özniteliği.

böylece daha fazla gibi

alert('I am in block' + $(this).parent().index());

Sen güvenli oyun ve uygun ebeveyn id değerini yapacak bir REL niteliğini ekleyebilirsiniz. Eğer etrafında elemanları taşıdığınızda REL niteliğini korumak için bazı kod eklemeniz gerekir.