jQuery UI sortable
Здравствуйте!
Задача в общих чертах такая: если элемент сбрасывается между нижними элементами, то стандартное поведение sortable, а если прямо на нижний элемент, то другое поведение. Как можно определить на какой элемент был сброшен перетаскиваемый элемент? |
Цитата:
|
Вот еще метод есть...
http://jquery-docs.ru/core/index/#subject |
Цитата:
И как получить значения его свойств? |
Цитата:
|
<div>
<ul class="sort">
<li>aaaaa</li>
<li>bbbbb</li>
<li>ccccc</li>
<li>ddddd</li>
<li>eeeee</li>
<li>fffff</li>
</ul>
<script>
$(function () {
$(".sort").sortable({
connectWith: "ul",
opacity: "0.75",
});
});
</script>
</div>
Вот если сбросить элемент прямо в другой элемент, нужно узнать, что за элемент был внизу. |
_Kirill, это разве пример? :D
Вот пример!
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.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>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { 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; }
</style>
<script type='text/javascript'>
$( function() {
$( "#sortable" ).sortable({
stop: function( event, ui ) {
var o=$('.ui-state-default');
alert('Всего '+o.length+' наш '+o.index(ui.item));
}
});
$( "#sortable" ).disableSelection();
});
</script>
</head>
<body>
<ul id="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"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
</ul>
</body>
</html>
|
_Kirill, смотри какие еще события тебе дает сортабле
http://api.jqueryui.com/sortable/ и выбирай из них те, которые тебе подойдут... ;) |
Цитата:
Тебе ведь нужно знать не последним ли стал твой элемент? Мой пример даст тебе на это ответ. :yes: |
Нет, мне нужно именно знать, что за элемент был внизу в момент дропа :)
Дело вот в чем: есть иерархическое дерево, в котором все элементы условно делятся на два типа: файлы и папки. Папки могут содержать дочерние элементы, файлы, естественно, нет. Ну и проблема вот в чем: если в папке есть хотя бы один дочерний элемент, то функционала sortable вполне достаточно, чтобы добавить в эту папку еще элементы, но если папка пустая, то дропнуть элемент можно только на саму папку. Соответственно нужно узнать что это именно папка и удалить элемент с первоначальной позиции и добавить в эту пустую папку. Т.е. мне нужно как бы объединить функционал droppable и sortable. С событиями все понятно, проблема в определении элемента, над которым был дроп. |
| Часовой пояс GMT +3, время: 23:15. |