Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.10.2012, 03:19
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Тоесть, сейчас другие дивы автоматически встают в ту же позицию, что и перемещаемый див. А мне нужно реализовать:
$('.other_div').offset().top + ui.offset.top - изначальная позиция перемещаемого элемента

задавать ее в start, а затем использовать в drag не срабатывает
Ответить с цитированием
  #12 (permalink)  
Старый 26.10.2012, 16:37
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Проще говоря, нужно передвигать другие дивы не в ту же позицию, что и перемещаемый див, а на расстояние, на которое был передвинут перемещаемый див
Ответить с цитированием
  #13 (permalink)  
Старый 26.10.2012, 17:19
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

var oldLeft, oldTop;
$( "#draggable" ).draggable({
            start: function(event, ui) {
                  oldLeft=ui.offset.left;
                  oldTop=ui.offset.top;
            },
            drag: function( event, ui) {
                  // считаем координаты на сколько уехали от старта.
                  var left=oldLeft-ui.offset.left
                  var top=oldTop-ui.offset.top                 

                   //left - на сколько сдвинулись по горизонтали
                   //top на сколько по вертикали

                  //здесь двигай свои div

                  oldLeft=ui.offset.left;
                  oldTop=ui.offset.top;

            },
            stop: function() {
                   // что то при окончании перемещения
            }
        });

должно срабытывать :/
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 26.10.2012 в 17:26.
Ответить с цитированием
  #14 (permalink)  
Старый 26.10.2012, 19:45
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

DjDiablo, реализовывал точно так же. Сейчас попробую еще раз, может где то допустил ошибку в синтаксисе
Ответить с цитированием
  #15 (permalink)  
Старый 26.10.2012, 20:21
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Что то с рассчетом неправильно - другой див ведет себя очень странно
var oldLeft, oldTop;
        $( "div" ).draggable({
            start: function(event, ui) {
                oldLeft=ui.offset.left;
                oldTop=ui.offset.top;
            },
            drag: function( event, ui) {
                var left=ui.offset.left-oldLeft;
	            var top=ui.offset.left-oldTop;
                $("div").eq(0).offset( { left:$(this).offset().left+left, top:$(this).offset().top+top } );
                oldLeft=ui.offset.left;
	            oldTop=ui.offset.top;
           },
            stop: function() {
                   // что то при окончании перемещения
            }
        });
Ответить с цитированием
  #16 (permalink)  
Старый 26.10.2012, 20:27
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Все получилось. Огромное спасибо,DjDiablo
Ответить с цитированием
  #17 (permalink)  
Старый 26.10.2012, 20:31
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

$(this) - this не на то указывает на что вы думаете))

Вам же нужно что то вроде

el=$("div").eq(0);
el.offset( { left:el.offset().left+left, top:el.offset().top+top } );


Цитата:
Все получилось
Ну и клёво ))))
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 26.10.2012 в 20:36.
Ответить с цитированием
  #18 (permalink)  
Старый 26.10.2012, 21:10
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Сообщение от DjDiablo Посмотреть сообщение
$(this) - this не на то указывает на что вы думаете))
Да, я уже понял ошибку ) Вставил часть кода в общий скрипт - что то снова возникли неполадки.

Вроде, бы это последний момент. Если разберусь с этим, все остальные плагины вставлю аналогичным образом. Надеюсь на вашу помощь, в последний раз
$(document).ready(
    function (event) {
        var arr = new Array();
        $("body").selectable({
        selected:
            function(event, ui){
                var a = ui.selected;
                var oldLeft, oldTop;
                $(a).draggable({
                    start: 
                        function(event, ui) {
                            oldLeft=ui.offset.left;
                            oldTop=ui.offset.top;
                        },
                    drag:
                        function( event, ui) {
                            var left=oldLeft-ui.offset.left;
                            var top=oldTop-ui.offset.top;
                            $(a).offset( { left:$(a).offset().left-left, top:$(a).offset().top-top } );
                            oldLeft=ui.offset.left;
                            oldTop=ui.offset.top;
                        },
                    stop: 
                        function() {
                        // что то при окончании перемещения
                    }
                });

                      
            },
        unselecting:
            function(event, ui){
                var r = ui.unselecting;
                $(r).draggable({ cancel: "button" });
                      
            },
        unselected:
            function(event, ui){
                var r = ui.unselected;
                $(r).draggable({ cancel: "button" });
            },
        stop:
            function(event, ui){
                
                      
            }
        });

    }
)


Проблемы:
1. Другие выделенные дивы перестали передвигаться синхронно
2. При отмене выделения элемента, возможность передвигать его сохраняется


Суть кода в том, что, выделив, например 3 дива, они получают возможность передвигаться. При этом, передвигая один из них - за ним должны тащиться два других. Затем, при отмене выделения любого из них, он теряет возможность быть передвигаемым и перестает тащиться за перемещаемым дивом

Последний раз редактировалось todd-barry, 26.10.2012 в 21:39.
Ответить с цитированием
  #19 (permalink)  
Старый 27.10.2012, 02:37
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

в твоём примере ты меняешь координаты томуже элементу который и двигаешь, естественно остальные не двигаются. С какого они должны двигаться если ты им координаты не меняешь.

В двух словах мысль и спать,
проверять отлаживать слишком поздно, затра только если.

//все дивы можно выделять
$( "div" ).selectable();

//все дивы можно таскать
$("div").draggable({
        start: function(event, ui) {
                            oldLeft=ui.offset.left;
                            oldTop=ui.offset.top;
        },
        drag: function( event, ui) {
                            var left=oldLeft-ui.offset.left;
                            var top=oldTop-ui.offset.top;
 
                             var th=this;// а может ui или this.el - короче ссылка на  dom элемент к которому прикреплён dragable, посмотри в доках как сделать
// когда div перемещается за ним тащатся все остальные выделенны.
// сам div который двигаем исключим из выборки при помощи [B]not[/B]
                
                            $('.ui-selected"').not(th).each(function(){
$(this).offset( { left:$(this).offset().left-left, top:$(this).offset().top-top });

});
                            oldLeft=ui.offset.left;
                            oldTop=ui.offset.top;
       },
       stop: function() {
                        // что то при окончании перемещения
                    }
});
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 27.10.2012 в 02:45.
Ответить с цитированием
  #20 (permalink)  
Старый 27.10.2012, 22:40
Интересующийся
Отправить личное сообщение для todd-barry Посмотреть профиль Найти все сообщения от todd-barry
 
Регистрация: 22.10.2012
Сообщений: 15

Цитата:
в твоём примере ты меняешь координаты томуже элементу который и двигаешь, естественно остальные не двигаются.
Эх, я еще плохо понимаю, как работает javascript. Мне показалось, что таким образом будут двигаться все выделенные дивы
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацепить одновременно несколько элементов. LRCenter Events/DOM/Window 4 14.03.2011 09:22
Несколько созданных элементов располагаются в одной строке. Как этого избежать? Hold Events/DOM/Window 1 21.01.2011 23:52
как создать в цикле несколько дочерних элементов одного уровня? DimonCry Общие вопросы Javascript 11 13.01.2011 10:46
hover - несколько элементов как один megapup Events/DOM/Window 3 28.10.2010 20:06
Как обработать несколько элементов подряд? vladymyrk jQuery 1 07.01.2009 20:33