В прошлом уроке мы изучили JQuery закладки tabs, во-второйм уроке из этой серии по JQuery UI - сортировка sortable. Назначение сортировки - порядок элементов в списке, которые задаются при определенной выборке. Допустим, Вам нужно изменить порядок элементов, их имеется четыре: Разработка сайтов, Разработка дизайна, Продвижение сайтов и Обслуживание ПК. Нужно сделать, чтобы элемент Разработка сайтов поменялся местами с элементом Продвижением сайтов - при этом, соответственно, меняется и порядок элементов, это называется сортировкой. Но тут только имеется использование JQuery, без какого-либо сохранения в базе данных, поэтому, если Вам нужен скрипт который будет еще и сохранять позиции, - то лучше посмотрите урок сортировка перетаскиванием.
Перейдем непосредственно, к самому коду. В демо-версии представлены три варианта сортировки, ознакомтесь, изучите и поймите принцип работы элементов в списке.
Сначала подключаем стили и библиотеки.
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"> </script> <script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"> </script>
Теперь перейдем к трем вариантам сортировки.
Первый пример. Обычная сортировка.
CSS.
<style> #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>
JQuery.
<script> $(function() { $( "#sortable" ).sortable(); $( "#sortable" ).disableSelection(); }); </script>
HTML.
<ul id="sortable"> <li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Разработка сайтов</li> <li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Разработка дизайна</li> <li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Продвижение сайтов</li> <li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Обслуживание ПК</li> </ul>
2. Сортировка: соединение списков.
CSS.
<style> #sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0 0 2.5em; float: left; margin-right: 10px; } #sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; } </style>
JQuery.
<script> $(function() { $( "#sortable1, #sortable2" ).sortable({ connectWith: ".connectedSortable" }).disableSelection(); }); </script>
HTML.
<ul id="sortable1" class="connectedSortable"> <li class="ui-state-default">Разработка сайтов</li> <li class="ui-state-default">Разработка дизайна</li> </ul> <ul id="sortable2" class="connectedSortable"> <li class="ui-state-highlight">Продвижение сайтов</li> <li class="ui-state-highlight">Обслуживание ПК</li> </ul>
3. Сортировка: портлет.
CSS.
<style> .column { width: 600px; float: left; padding-bottom: 100px; } .portlet { margin: 0 1em 1em 0; } .portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; } .portlet-header .ui-icon { float: right; } .portlet-content { padding: 0.4em; } .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; } .ui-sortable-placeholder * { visibility: hidden; } </style>
JQuery.
<script> $(function() { $( ".column" ).sortable({ connectWith: ".column" }); $( ".portlet" ).addClass( "ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" ) .find( ".portlet-header" ) .addClass( "ui-widget-header ui-corner-all" ) .prepend( "<span class='ui-icon ui-icon-minusthick'> </span>") .end() .find( ".portlet-content" ); $( ".portlet-header .ui-icon" ).click(function() { $( this ).toggleClass( "ui-icon-minusthick" ).toggleClass ( "ui-icon-plusthick" ); $( this ).parents( ".portlet:first" ).find ( ".portlet-content" ).toggle(); }); $( ".column" ).disableSelection(); }); </script>
HTML.
<div class="column"> <div class="portlet"> <div class="portlet-header">Разработка сайтов</div> <div class="portlet-content">Текст</div> </div> <div class="portlet"> <div class="portlet-header">Разработка дизайна</div> <div class="portlet-content">Текст</div> </div> <div class="column"> <div class="portlet"> <div class="portlet-header">Продвижение сайтов</div> <div class="portlet-content">Текст</div> </div> <div class="column"> <div class="portlet"> <div class="portlet-header">Обслуживание ПК</div> <div class="portlet-content">Текст</div> </div> </div>
На этом в принципе все, в следующем уроке мы рассмотрим JQuery слайдер. Спасибо за внимание!