Потеря события MouseUp при выпуске не над одним и тем же элементом - PullRequest
2 голосов
/ 30 сентября 2010

У меня проблема со слайдером. Когда я беру обработчик, я изменяю .src изображения, просто чтобы изменить его цвет. Тем не менее, я хочу, чтобы он вернулся к исходному цвету, когда я отпущу кнопку мыши. Я пробовал две вещи.

1) Вернуть его на событие mouseup обработчика: это работает, только если я отпущу кнопку над обработчиком, поэтому это не решение.

2) Верните его на событие mouseup окна: событие не запускается должным образом. Если я щелкаю и отпускаю в любом месте окна, событие запускается нормально, но если я щелкаю в обработчике, перемещаю курсор в любую другую точку окна и затем отпускаю кнопку, событие не запускается.

Кстати, я использую прототип js framework.

Решения? Спасибо

Вот код. Я загружаю функцию обработчика, когда документ готов.

function handler()
{

    var handler = $('handler');

    Event.observe(window, "mouseup", function(){
        alert('salta');   //to see when mouseup fires
        if(handler.src=='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper_o.png'){    //orange
            handler.src='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper.png';}    //grey
    });


    Event.observe(handler,'mousedown',function(){handler.src='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper_o.png';});    //orange

}

Ответы [ 3 ]

6 голосов
/ 30 сентября 2010

Вы должны присоединить обработчик mouseup к объекту document.

1 голос
/ 30 сентября 2010

Вот код.Я загружаю функцию обработчика, когда документ готов.

function handler()
{

    var handler = $('handler');

    Event.observe(window, "mouseup", function(){
        alert('salta');   //to see when mouseup fires
        if(handler.src=='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper_o.png'){    //orange
            handler.src='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper.png';}    //grey
    });


    Event.observe(handler,'mousedown',function(){handler.src='http://localhost/moodle/blocks/videoavatar/eggface/trunk/gripper_o.png';});    //orange

}
1 голос
/ 30 сентября 2010

Как насчет onmouseout события?

...