Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2011, 03:26
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Не работает Drag ang Drop при использовании на странице ajax
Всем привет!
При написании скрипта столкнулся с проблемой.
Скрипт - Drag and Drop (написан очень просто).
Проблема - все работает хорошо. Но если на странице мы устанавливаем ajax - скрипт D&D перестает сохранять через куки положение окна. При этом в консоли пишет:
"Uncaught TypeError: Object function (E,F){return new b.fn.init(E,F)} has no method 'cookie'"

$.ajax({
                url: "/mchat",
                cache: false,
                success: function(html){
                    $("#ls-ok").html(html);
                }
           });


Сам скрипт:

$(function(){

    var dragDistanceX, dragDistanceY, self;
	
    $('#chatbox').show();
	
	$('#chatbox-top').mousedown(function () {
		self = $('#chatbox');
		dragDistanceX = -1;
		dragDistanceY = -1;
		
		
		document.ondragstart = function() { return false }
		document.body.onselectstart = function() { return false }
		
		$(document).bind('mousemove', dragChat);
	});
        $('body').mouseup(function () {
		
		$(document).unbind('mousemove', dragChat);
		
		document.ondragstart = function() { return true }
		document.body.onselectstart = function() { return true }

		$.cookie('mchatPosX', parseInt(self.css('left')));
		$.cookie('mchatPosY', parseInt(self.css('top')));
	})

        $('#chatbox').css({
		left: $.cookie('mchatPosX') || 0,
		top: $.cookie('mchatPosY') || 0,
	});
	
	dragChat = function(event) {
		if (dragDistanceX < 0) {
			dragDistanceX = event.pageX - parseInt(self.css('left'));
			dragDistanceY = event.pageY - parseInt(self.css('top'));
		} else {
			var leftPosition = event.pageX - dragDistanceX > 10 ? event.pageX - dragDistanceX : 0;
			var topPosition = event.pageY - dragDistanceY > 10 ? event.pageY - dragDistanceY : 0;
			if (leftPosition + 10 + parseInt(self.width()) >= $(window).width()) {
				leftPosition = $(window).width() - parseInt(self.width());
			}
			
			if(topPosition + 10 + parseInt(self.height()) >= $(window).height()) {
				topPosition = $(window).height() - parseInt(self.height());
			}
			
			self.css({
				left: leftPosition,
				top: topPosition
			});
		}
	}

});


#chatbox - Окно, которое перемещается
#chatbox-top - Область на окне, при нажатии на которую скрипт активируется
Прошу, подскажите, в чем может быть проблема. С таким сталкиваюсь впервые((

Последний раз редактировалось Dorian_bs, 11.08.2011 в 03:34. Причина: Дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2011, 04:46
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Не вижу взаимосвязи друг с другом приведенных вами двух листингов программы, извините но как бы надо более полную картину показать, что бы мы могли ее запустить и посмотреть что к чему... какое отношение имеет ваш листитнг dragdrop к тому куску кода что указан выше.
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2011, 13:55
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

может все же устанавливая куку нужно указывать ее время жизни, да и путь рекомендуется указать например "/"
Ответить с цитированием
  #4 (permalink)  
Старый 11.08.2011, 14:01
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Тогда почему куки работают нормально до загрузки ajax?
Есть ли какие то другие формы записи ajax?
Ответить с цитированием
  #5 (permalink)  
Старый 11.08.2011, 14:03
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Хотя я заметил, что если вытягивать содержимое какого то div'a с той странице, а не её целиком - все работает

--------------

В если попробовать не выводить всю страницу целиком, а только её содержимое?
Например на странице находится:
<div id="message"></div>
<div id="message"></div>
<div id="message"></div>
<div id="message"></div>

Как или можно импортировать гет-запросом и отобразить в таком же порядке, что и тут?

Последний раз редактировалось Dorian_bs, 11.08.2011 в 14:17.
Ответить с цитированием
  #6 (permalink)  
Старый 11.08.2011, 15:31
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

id="message"

ИД должен быть один уникальным на одном элементе, тоесть ИД не может повторяться на разных элементах. напиши лучше <div class="message"></div>

$("#ls-ok").load("/mchat .message");
Ответить с цитированием
  #7 (permalink)  
Старый 11.08.2011, 15:41
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Спасибо огромное! Все работает!)))))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает ajax запрос ЯРОСЛАВ jQuery 9 07.04.2010 22:31
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11
AJAX - заполнение select - неправильно работает в Mozilla 5.0 С.Тарасов AJAX и COMET 0 17.06.2009 00:58
не работает вперед/назад при передаче параметров странице hoid Я не знаю javascript 10 03.06.2009 16:09