jquery sortable - исключить отдельный элемент в списке из того, чтобы быть связанным с другими списками, будучи сортируемым в его собственном списке

Я ищу это с прошлой пятницы, не мог найти никакого решения. Одна вещь, о которой я подумал и несколько раз попробовал, - это сначала создать функцию, где ВСЕ элементы в списке, содержащие этот элемент, которые на самом деле должны быть исключены из других списков, могут быть перемещены в этом списке, и позже построение другой функции, где ВСЕ элементы готовятся к перемещению в другие списки, но один определенный элемент исключается из этого.

но кажется, что вы не можете написать две функции для одного списка с помощью jquery или это возможно?

во всяком случае, мой запрос на самом деле лучше всего описан в заголовке, хотя я до сих пор не смог найти никакого решения. У кого-нибудь есть идеи, как это решить?

С уважением, Мащек

РЕДАКТИРОВАТЬ:

Вот некоторый код:

 $("#tx-sortable2").sortable({    
                               items: \'li:not(.tx-header)\',
                                connectWith: \'#tx-sortable2,#tx-sortable3\',            
                                helper: \'clone\',
                                 opacity: 0.6,

                                 forceHelperSize: true,
                                placeholder: \'tx-highlight\',
                                revert: \'invalid\',
                                update: function() {
                                    var order = $(this).sortable("serialize") + \'&action=bla=blubb\';                                    
                                    $.ajax({
                                         url: \'index.php?bla=blubb\',
                                         type: \'POST\',
                                         data: order,
                                         timeout: 50000,
                                         beforeSend: function() {
                                         $("#tx-response").show();
                                         $("#tx-response").fadeOut(2000);
                                    }
                               });                    
                          }             

В этом примере все li-элементы в #tx-sortable2 могут быть перемещены в списки #tx-sortable3 и в сам список #tx-sortable2, вот что означает connectWith. Опять же, мой вопрос: как сделать один li-элемент сортируемым в его собственном списке (здесь #tx-sortable2), но предотвратить его перетаскивание в другой список?

2 ответа

Вы можете вызвать событие отмены, когда исключенный элемент будет перемещен в связанный список. Просто дайте исключенному элементу какой-то особый атрибут (класс).

Что-то в строю.

HTML

<ul id="tx-sortable2">
    <li>Element2_1</li>
    <li class="excluded">Element2_2</li>
    <li>Element2_3</li>
    <li>Element2_4</li>
</ul>

<ul id="tx-sortable3">
    <li>Element3_1</li>
    <li>Element3_2</li>
    <li>Element3_3</li>
    <li>Element3_4</li>
</ul>

JS

$("#tx-sortable2").sortable({
    connectWith: '#tx-sortable3', 
    over: function(){
        if($(ui.item.hasClass('excluded')){
           $(ui.sender).sortable('cancel');
        }
});

Я думаю, что вы можете использовать собственную опцию jQuery UI под названием Axis. Он указывает направление, в котором элемент может быть перемещен. Поэтому, если остальные ваши списки находятся справа или слева, вы можете установить для оси значение 'y', чтобы вы не могли перемещать их по горизонтали. Тогда у вас будет список, в котором вы сможете отсортировать элементы в этом списке, но вы не сможете связать его с другими списками.

Другие вопросы по тегам