Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Drag&Drop
 
 автор: (Sandr)   (31.08.2011 в 16:12)   письмо автору
 
 

Есть код вида:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js" type="text/javascript"></script> 
 
    <style>
    .shaft { width: 170px; float: left; padding-bottom: 100px; }
    .content { margin: 0 1em 1em 0; border: 2px solid;}
    .content-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; text-align: center; color: blue;}
    .content-header .ui-icon { float: right; }
    .content-text { padding: 0.4em; }
    .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 100px !important; }
    .ui-sortable-placeholder * { visibility: hidden; }
    </style>
 
    <script>
    $(function() {
        $( ".shaft" ).sortable({
            connectWith: ".shaft" // связываем класс shaft с методом sortable, который отвечает за перетаскивание блоков 
        });
 
        //ниже добавляем воспомогательные класс.
        //Главный- .content, это сам перетаскиваемый блок.
        $( ".content" ).addClass( "ui-widget ui-widget-text ui-helper-clearfix ui-corner-all" )
            .find( ".content-header" )
                .addClass( "ui-widget-header ui-corner-all" )
                .prepend( "<span class='ui-icon ui-icon-minusthick'></span>")
                .end()
            .find( ".content-text" );
 
        // заменяем блоки друг другом
        $( ".content-header .ui-icon" ).click(function() {
            $( this ).toggleClass( "ui-icon-minusthick" ).toggleClass( "ui-icon-plusthick" );
            $( this ).parents( ".content:first" ).find( ".content-text" ).toggle();
        });
 
        $( ".shaft" ).disableSelection(); // сбрасываем перетаскиваемый блок
    });
    </script>
 
 
<div class="shaft">
 
    <div class="content">
        <div class="content-header">Комментарии</div>
        <div class="content-text">Текст</div>
    </div>
 
    <div class="content">
        <div class="content-header">Новости</div>
        <div class="content-text">Текст</div>
    </div>
 
</div>
 
<div class="shaft">
 
    <div class="content">
        <div class="content-header">Записи</div>
        <div class="content-text">Текст.</div>
    </div>
<div class="content">
        <div class="content-header">Заметка</div>
        <div class="content-text">Текст</div>
    </div>
 
    <div class="content">
        <div class="content-header">Картинка</div>
        <div class="content-text">Текст</div>
    </div>
</div>



Этот код, как многие наверно догадались позволяет перетаскивать элементы. Но вот возник вопрос, после того, как пользователь их перетащит, как сделать, чтобы сайт запомнил их расположение? Может, записывать в бд? Но каким образом?
П.С. количество элементов может изменяться.

  Ответить  
 
 автор: cheops   (31.08.2011 в 16:15)   письмо автору
 
   для: (Sandr)   (31.08.2011 в 16:12)
 

Считайте при помощи метода position() положение элемента относительно верхнего угла и отправьте его при помощи AJAX-запроса серверу.

  Ответить  
 
 автор: (Sandr)   (31.08.2011 в 16:43)   письмо автору
 
   для: cheops   (31.08.2011 в 16:15)
 

Я так понимаю, это нужно делать тогда, когда пользователь меняет элементы местами? Если да, то проблема не в этом. Проблема в том, как хранить в бд всё это. И выводить на готовую страницу.
+++
П.С. Я дал не много не тот код. В коде из первого поста, элементы могут располагаться в 2 столбика. А в моём случае, в один столбик (или строку, зависит от css).

  Ответить  
 
 автор: (Sandr)   (31.08.2011 в 16:45)   письмо автору
 
   для: cheops   (31.08.2011 в 16:15)
 

Придумал хранить позиции элементов в бд, но для этого нужно как-то установить их последовательность на странице.. Можете как-то по подробнее рассказать про метод position() ? Он к jQuery относится?

  Ответить  
 
 автор: cheops   (31.08.2011 в 18:55)   письмо автору
 
   для: (Sandr)   (31.08.2011 в 16:45)
 

Да, метод position() относится к jQuery. Возвращает он объект, который содержит элементы top и left, которые можно использовать для получения координат.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования