Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2012, 13:40
Аватар для ddale
Аспирант
Отправить личное сообщение для ddale Посмотреть профиль Найти все сообщения от ddale
 
Регистрация: 04.07.2012
Сообщений: 50

Остановить выполнение функции
Привет.

Вот код
$("#look").mousemove(function (e) {

        // отслеживание перемещения нестандартного курсора в пределах слайдера
        var Cur = $('#cursor');
        Cur.css({
            'left': parseInt(e.pageX - 0) + 'px',
            'top': parseInt(e.pageY - 80) + 'px',
            'opacity': 1.0,
        });

        if ($('#header').css('top') == '-200px') { // вот условие
            $(document).mousemove(function(r){

                var sw = $(window).width();
                var sh = $(window).height();

                if (sw/sh > 1.6) {
                    var k = sw / treeInitWidth;
                    var w = sw;
                    var h = parseInt(treeInitHeight*k);
                } else {
                    var k = sh / treeInitHeight;
                    var h = sh;
                    var w = parseInt(treeInitWidth*k);
                }
                
                var rx = w/sw;
                var ry = h/sh;

                var x = r.pageX;
                var y = r.pageY;
                    
                var left = x*(1 - rx);
                var top = (ry < 1) ? (sh-h) : y*(1 - ry);

                el.css({
                    left : left,
                    top  : top
                });
                $('.tree-container').css({
                    left : left,
                    top  : top
                });
                
            });

        }

        else{
            // что написать, чтобы остановить выполнение функции
        }

    });

Последний раз редактировалось ddale, 07.08.2012 в 13:54.
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2012, 14:05
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

что значит остановить если в принципе ничего не происходит при не выполнении условия

попробуйте

e.preventDefault()

или r.preventDefault()

смотря куда в для какой из mousemove
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2012, 14:10
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

о боже, событие вешают в событии да еще и mousemove в mousemove
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2012, 14:14
Аватар для ddale
Аспирант
Отправить личное сообщение для ddale Посмотреть профиль Найти все сообщения от ddale
 
Регистрация: 04.07.2012
Сообщений: 50

devote,
да, а какая разница. я могу этот же второй mousemove вложить в событие click. как его остановить при невыполнении условия?
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2012, 14:22
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

до меня дошло что значит остановить))

отписатся надо

.... .unbind('mousemove', ...

но в вашем случае когда подписывайтесь, сделайте не анонимную функцию, и потом эту же функцию и отписывайте
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2012, 20:29
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

document.onmousemove = null;
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2012, 20:31
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от bes
document.onmousemove = null;
не поможет.. он же сажает событие через addEventListener/attachEvent.. То есть джуквери сажает, а значит с помощью джуквери и надо их снимать
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2012, 20:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

if ($('#header').css('top') == '-200px') { // вот условие
$(document).bind('mousemove', function(r){
   //тут что то






    });
}	 
   else  {
	            // что написать, чтобы остановить выполнение функции
             $(document).unbind('mousemove')
           }
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2012, 23:50
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

Deff,
могу ошибатся но такой анбинд снимет все кастомные подписки на mousemove, если даже не так то кашернее бы поступить так

function onHeaderMouseMove(r) {
	var sw = $(window).width();
	var sh = $(window).height();

	if (sw / sh > 1.6) {
		var k = sw / treeInitWidth;
		var w = sw;
		var h = parseInt(treeInitHeight * k);
	} else {
		var k = sh / treeInitHeight;
		var h = sh;
		var w = parseInt(treeInitWidth * k);
	}

	var rx = w / sw;
	var ry = h / sh;

	var x = r.pageX;
	var y = r.pageY;

	var left = x * (1 - rx);
	var top = (ry < 1) ? (sh - h) : y * (1 - ry);

	el.css({
		left: left,
		top: top
	});
	$('.tree-container').css({
		left: left,
		top: top
	});
}

$().ready(function () {
	$("#look").mousemove(function (e) {
		$('#cursor').css({
			'left': parseInt(e.pageX - 0) + 'px',
			'top': parseInt(e.pageY - 80) + 'px',
			'opacity': 1.0
		});

		if ($('#header').css('top') == '-200px')
			$(document).bind('mousemove', onHeaderMouseMove);
		else
			$(document).unbind('mousemove', onHeaderMouseMove);
	});
});


PS еще тут очень пригодится прежде чем биндить, проверка, а не забиндено ли уже, сор если надо с утра напишу

Последний раз редактировалось mullih, 07.08.2012 в 23:55.
Ответить с цитированием
  #10 (permalink)  
Старый 08.08.2012, 00:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

mullih,
Кошерней - но как грил Горби - главное - начать, поправить можно по ходу пьесы
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как остановить выполнение яваскрипта ? Serjuk AJAX и COMET 20 17.06.2012 22:32
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Определить выполнение функции BAnder Events/DOM/Window 24 03.02.2009 20:58
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59