2010-03-12 6 views
0

un coup d'oeil à ce code:L'utilisation de removeEventListener sur le document ne fonctionne pas?

$(document).ready(function() { 
    document.getElementById(sliderId).onmousedown = sliderMouseDown; 
}); 

function sliderMouseDown() { 
    document.onmousemove = sliderMouseMove; 
    document.onmouseup = sliderMouseUp; 
} 

function sliderMouseMove() { 
    $('#test').html("sliding"); 
} 

function sliderMouseUp() { 
    $('#test').html("not sliding"); 
    document.removeEventListener('mousemove', sliderMouseMove, false); 
    document.removeEventListener('mouseup', sliderMouseUp, false); 
} 

Tout fonctionne comme il se doit, jusqu'à ce que la fonction sliderMouseUp est appelée. Maintenant, la fonction s'appelle bien, et la # test-div dit "ne glisse pas", mais si je déplace ma souris dans le document, elle affiche de nouveau "glissant" dans le # test-div, comme si la fonction removeEventListener ne marche pas. Est-ce que je fais quelque chose de mal ici?

+2

Si vous utilisez jQuery, vous devriez également l'utiliser pour gérer vos événements. – scunliffe

Répondre

4

Si jQuery est une option, et semble que ce soit depuis que vous l'utilisez, faites ceci:

$(function() { 
    $("#" + sliderId).mousedown(function() { 
    $(document).mousemove(function() { 
     $("#test").html("sliding"); 
    }).mouseup(function() { 
     $("#test").html("not sliding"); 
     $(document).unbind("mousemove mouseup"); 
    }); 
    }); 
}); 

Utilisation du modèle d'événement jQuery entraînera beaucoup moins de tirer les cheveux, laissez-le prendre soin du cross-navigateur et des caprices d'événements pour vous.

+0

Merci beaucoup, j'ai commencé à travailler sur un script multi-navigateur personnalisé .. Un problème en utilisant votre script (seulement dans Firefox, IE fonctionne bien), après avoir "glissé" le # test-div la première fois, firefox pense que je veux "glisser" le div quelque part sur la deuxième mousemove, un peu comme si vous faisiez glisser une image depuis le navigateur. –

+0

On dirait que c'est un problème connu avec les navigateurs non-IE, je vais y jeter un coup d'oeil moi-même. En tout cas, merci pour votre aide –

+0

@ user281434 - Bienvenue :) Si plus de problèmes surviennent, laissez un autre commentaire ici, je le vois apparaître et je vais essayer de vous aider. –

Questions connexes