Вызов Sortable во 2-й раз, когда вы переинициализируете его.Вы должны вызвать Sortable следующим образом:
$(function() {
$( ".sortable" ).sortable();
$( ".sortable" ).disableSelection();
$('.sortable').sortable("option", "cancel", '.note');
});
Одна проблема, отмена ожидает элемент, как "p"
, а не класс.
Предотвращает сортировку при запускена элементах , соответствующих селектору.
Другая проблема заключается в том, что <p>
не должен быть частью <ul>
для правильного синтаксиса HTML.Я бы предложил следующее:
$(function() {
$(".sortable").sortable({
cancel: "p"
});
$(".sortable").disableSelection();
});
.sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 60%;
}
.sortable li,
.sortable p {
margin: 0 3px 3px 3px;
padding: 0.4em;
padding-left: 1.5em;
font-size: 1.4em;
height: 18px;
}
.sortable li span {
position: absolute;
margin-left: -1.3em;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<ul class="sortable">
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
</ul>
<div class="sortable">
<p class="ui-state-default note">This is a Note</p>
</div>
Это позволит заметке выглядеть как часть списка, но не будет сортироваться любым способом.
Обновление
$(function() {
$(".sortable").sortable({
items: "li:not(.note)"
});
$(".sortable").disableSelection();
});
.sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 60%;
}
.sortable li,
.sortable p {
margin: 0 3px 3px 3px;
padding: 0.4em;
padding-left: 1.5em;
font-size: 1.4em;
height: 18px;
}
.sortable li span {
position: absolute;
margin-left: -1.3em;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<ul class="sortable">
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
<li class="ui-state-default note">This is a Note</li>
</ul>