Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.11.2014, 15:23
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

jQuery функция, не пойму почему так работает
Доброго времени суток, может кто из умнейших знатаков подскажет почему у меня не получается. Задача такая: нужно показывать координаты пока зажата клавиша мыши. Что я делая ни так? После того как я отпуская кнопку, он продолжает показывать координаты.
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(e) {
jQuery("#blo").mousedown(function(e){
		jQuery("#blo").mousemove(function(e){
		X = e.pageX-jQuery(this).offset().left;
		Y = e.pageY-jQuery(this).offset().top;
		jQuery("#kor").html("x="+X+"y="+Y);
	})
}).mouseup(function(){jQuery("#kor").html("");});
});
</script>
<div id="blo" style="width:500px; height:500px; background-color:#093;"></div>
<div id="kor" ></div>
Ответить с цитированием
  #2 (permalink)  
Старый 15.11.2014, 15:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

vanoha,
по mousedown устанавливают флаг только что показ возможен и всё -- mouseup снимают флаг -- в mousemove
проверяют и показывают данные взависимости от флага

либо функции вывода дают имя и по mouseup делают off('mousemove' ,'#blo' , 'имя')
Ответить с цитированием
  #3 (permalink)  
Старый 15.11.2014, 15:37
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

Ничего не понял. Можно на примере?
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2014, 18:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

vanoha, вариант с флагом
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script>
        jQuery(function() {
            var flag = false;
            jQuery("#blo").mousemove(function(e) {

                X = e.pageX - jQuery(this).offset().left;
                Y = e.pageY - jQuery(this).offset().top;
                jQuery("#kor").html(flag ? "x=" + X + "y=" + Y : "");
            })
            jQuery("#blo").mousedown(function(e) {
                flag = true

            }).mouseup(function() {
                flag = false
            });

        });
    </script>
</head>

<body>
    <div id="blo" style="width:500px; height:500px; background-color:#093;"></div>
    <div id="kor"></div>
</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 15.11.2014, 18:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

vanoha,
вариант с off
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script>
        jQuery(function() {
            var flag = function(e) {
                X = e.pageX - jQuery(this).offset().left;
                Y = e.pageY - jQuery(this).offset().top;
                jQuery("#kor").html("x=" + X + "y=" + Y);
            },
            blo = jQuery("#blo");
            blo.mousedown(function(e) {
                blo.on({
                    'mousemove': flag
                })

            }).mouseup(function(e) {
                jQuery("#kor").html("");
                blo.off({
                    'mousemove': flag
                })
            });

        });
    </script>
</head>

<body>
    <div id="blo" style="width:500px; height:500px; background-color:#093;"></div>
    <div id="kor"></div>
</body>

</html>

Последний раз редактировалось рони, 17.11.2014 в 00:17. Причина: исправлена строка 16
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2014, 19:03
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

Спасибо огромное, всё получилось. Только я пробовал сделать что то типа первого варианта у меня не выходила переменная из функции... Я задавал не false-true, а 1-0. но почему то в переменную не попадало, а тут всё работает... Пробовал ещё 1-0 вставлять в атрибут а затем проверять значение атрибута, была та же фигня. А за эти скрипты спасибо, всё работает, буду разбираться что я делал не правильно...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает на jQuery 1.4.4? pro10026 jQuery 13 06.03.2014 10:22
Вызов конструктора без new. Почему не со всеми работает? danik.js Javascript под браузер 2 23.02.2014 00:09
Не работает jQuery doox911 Библиотеки/Тулкиты/Фреймворки 3 17.01.2014 15:51
почему один вызов load работает, а другой - нет kravru jQuery 1 16.09.2013 20:51
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01