web-dev-qa-db-fra.com

Comment exclure un élément d'être glissé dans une liste triable?

Comment exclure un élément de la liste triable? Par exemple, il y a un élément avec le nom de classe 'note' que je ne pas veux être draggable?

    <ul class="sortable">

            <li id="item_3">Item 3</li>
            <li id="item_4">Item 4</li>
            <li id="item_5">Item 5</li>

            <p class="note">This is a note only</p> 
   </ul>

jquery ui sortable, jquery not ne fonctionne évidemment pas ...

$(function() {
    $( ".sortable:not(.note)" ).sortable(
    }).disableSelection();
});
35
laukok

Vous devez utiliser annuler.

Voir l'exemple de travail ici .

Js:

$(function() {
    $('.sortable').sortable();
    $('.sortable').disableSelection();
    $('.sortable').sortable({ cancel: '.note' });
});​

Comme le souligne @Zephyr, cela vous permet de réorganiser la position en faisant glisser les frères et sœurs, si vous voulez éviter cela, utilisez approche owise1 :

$('.sortable').sortable({
    items : ':not(.note)'
});
44
Trufa

Vous pouvez utiliser l'option " items " de sortable:

$( ".sortable" ).sortable({
    items : 'li'
});

exemple

ou...

$( ".sortable" ).sortable({
    items : ':not(.note)'
});

exemple

23
owise1

Vous pouvez explicitement exclure des éléments avec:

$( ".sortable" ).sortable({
     cancel: ".disable-sorting"
});
4
Mladen Janjetovic