Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Остановить выполнение функции (https://javascript.ru/forum/jquery/30525-ostanovit-vypolnenie-funkcii.html)

ddale 07.08.2012 13:40

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

Вот код
$("#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{
            // что написать, чтобы остановить выполнение функции
        }

    });

mullih 07.08.2012 14:05

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

попробуйте

e.preventDefault()

или r.preventDefault()

смотря куда в для какой из mousemove

devote 07.08.2012 14:10

о боже, событие вешают в событии да еще и mousemove в mousemove

ddale 07.08.2012 14:14

devote,
да, а какая разница. я могу этот же второй mousemove вложить в событие click. как его остановить при невыполнении условия?

mullih 07.08.2012 14:22

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

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

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

но в вашем случае когда подписывайтесь, сделайте не анонимную функцию, и потом эту же функцию и отписывайте

bes 07.08.2012 20:29

document.onmousemove = null;

devote 07.08.2012 20:31

Цитата:

Сообщение от bes
document.onmousemove = null;

не поможет.. он же сажает событие через addEventListener/attachEvent.. То есть джуквери сажает, а значит с помощью джуквери и надо их снимать

Deff 07.08.2012 20:36

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






    });
}	 
   else  {
	            // что написать, чтобы остановить выполнение функции
             $(document).unbind('mousemove')
           }

mullih 07.08.2012 23:50

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 еще тут очень пригодится прежде чем биндить, проверка, а не забиндено ли уже, сор если надо с утра напишу

Deff 08.08.2012 00:14

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


Часовой пояс GMT +3, время: 00:52.