jQuery Sortable - не перетаскивать последний элемент списка - PullRequest
8 голосов
/ 25 января 2012

У меня есть несортированный список (UL), который содержит сортируемые элементы списка (LI), за исключением последнего элемента списка. Мне нужен последний элемент, чтобы остаться в конце списка:

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 2</li>
    <li>Last item</li><!-- Should always be the last item -->
</ul>

Я использую jQuery Sortable для сортировки элементов списка.

Кто-нибудь знает хороший способ предотвратить перетаскивание элементов списка за последний элемент списка?

Ответы [ 3 ]

16 голосов
/ 25 января 2012

Вы можете передать селектор, исключающий последний элемент в опции items :

$("ul").sortable({
    items: "li:not(:last-child)"
});
0 голосов
/ 31 июля 2014

Вам лучше использовать cancel свойство

http://api.jqueryui.com/sortable/#method-cancel

$("ul").sortable({
        items: 'li',
        cancel: 'li:last-child'
});

или добавить класс к последнему элементу li, а затем:

$("ul").sortable({
        items: 'li',
        cancel: '.last-el-class'
});
0 голосов
/ 18 февраля 2014

Сегодня вы можете оставить его на CSS с использованием содержимого и пользовательских данных :

HTML

<ul data-lastitem="Last item">
   <li>Item 1</li>
   <li>Item 2</li>
   <li>Item 2</li>
</ul>

CSS

ul:after {
  content: attr(data-lastitem)
}
li, ul:after {
  border: 0.15em solid #ccc;
  margin: 0.8em 0;
  padding: 0.8em;
  list-style: none;
  background-color: #FFF;
  display:block
}

Тогда Javascript будет просто так:

$("ul").sortable();

Смотрите, это работает в JSBin

...