Горизонтальный sortable
Привет всем, начинаю изучать jquery, очень понравился sortable. Увидел примеры тут: http://jquery.page2page.ru/index.php...лементы
Ну на сколько я понимаю список вертикальный, а можно сделать горизонтальный список? Всем спасибо за ответы. |
Вы не поверите, можно даже таблицей - http://jqueryui.com/sortable/#display-grid
|
О спасибо, а можно каким то методом узнать порядок элементов, после перетаскивания? буду очень презнателен.
|
Да, есть метод .toArray(). Возвратит массив id элементов. Можно передать свой атрибут, тогда вместо id будет ваш атрибут. Подробнее здесь.
|
Большое спасибо, подскажите ещё, есть ли метод для задавания максимального количеста элемента в списке? если я хочу два списка коннектед сделать и перетаскивать из одного во второй.
|
Вам так сложно посмотреть полную документацию? http://jqueryui.com/sortable/#connect-lists
|
Спасибо, это я видел, но как сделать, если я хочу что б в список максимально 7 элемнтов можно было добавить? Это возможно?
|
Все равно не пойму, с чем у вас проблемы. 7 элементов горизонтально? Ну так подсчитайте, сколько они займут место (ширина, поля и отступы) и ограничьте тег UL, в котором они будут находится, по ширине. Тогда 8й и последующие перейдут на 2ю строку.
В примере с сеткой там 4 элемента в строке. Увеличиваете width у ul до 540px - вмещаются 5 элементов. |
Я приведу пример своего кода:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link type="text/css" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" rel="stylesheet" /> <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script> <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" type="text/javascript"></script> <style type="text/css"> body{font:9pt Arial,sans-serif;} .connectedSortable{list-style-type:none; margin:20px 20px 20px 20px; padding:0px 0px; width:320px; height:50px; background-color:#ddd; border: 4px double black;} .connectedSortable li{float:left;margin:1px 1px 1px 1px; text-align:center; font-size:1.4em; height:50px; width:100px; background-color:#fff; border:1px solid #888} #sortable4{height:110px} </style> <script type="text/javascript"> $(function() { $( ".connectedSortable" ).sortable({ connectWith:".connectedSortable" }).disableSelection(); // для отмены выделения текста на элементах }); function messageWrite() { var result1 = $( "#sortable1" ).sortable( "toArray" ); var result2 = $( "#sortable2" ).sortable( "toArray" ); var result3 = $( "#sortable3" ).sortable( "toArray" ); document.writeln(result1+"</br>"+result2+"</br>"+result3); } </script> </head> <body> <ul id="sortable1" class="connectedSortable"> </ul> <ul id="sortable2" class="connectedSortable"> </ul> <ul id="sortable3" class="connectedSortable"> </ul> <ul id="sortable4" class="connectedSortable"> <li id="1">1</li> <li id="2">2</li> <li id="3">3</li> <li id="4">4</li> <li id="5">5</li> <li id="6">6</li> </ul> <input type="button" name="Check" value=" Check " onclick="messageWrite()" /> </body> </html> Проблема в том что в каждsй из горизонтальных списков визуально входят 3 элемента, но физически и 4-ый элемент туда заходит и висит визуально некрасиво непонятно где. Мне хотелось что б нельзя было в список запыхнуть 4-ый элемент, если 3 там уже есть. |
Есть функция beforeStop, которая вызовется перед окончанием перетаскивания, и есть метод cancel, который отменяет сортировку. Исходя из этого имеем:
beforeStop: function( event, ui ) { if (#количество элементов 3#) { $( ".connectedSortable" ).sortable( "cancel" ); } } И по поводу document.writeln - перезапишет вам весь документ, используйте console или alert для отладки. |
Часовой пояс GMT +3, время: 05:52. |