2012-06-12 6 views
0

Je suis un mendiant qui construit actuellement un script jQuery simple où j'aimerais que mon action se produise lorsque je le fais glisser hors de ses limites. Donc, je pensais à détecter un mousedown et à l'intérieur de sa fonction avoir un mouseleave.jQuery mousedown + mouseleave

Mais ce qui se passe n'est pas ce que j'attends puisque chaque fois que je passe ma souris dessus - pas besoin de cliquer, l'événement se déclenche.

Voici le code que j'ai mis ensemble.

$(document).ready(function() { 
    $(".box").mousedown(function() { 
    $(".box").mouseleave(function() { 
     alert("Hello world!"); 
    }); 
    }); 
}); 

Aide très appréciée, merci!

Répondre

1
$(".box").mousedown(function() { 
    alert('mousedown'); 
    $(this).addClass('imclicked'); 
    }).mouseleave(function() { 
     if($(this).hasClass('imclicked')) { 
     alert("Hello world!"); 
     $(this).removeClass('imclicked'); 
     } 
    });; 
0

Essayez ceci:

$(document).ready(function() { 
    $(".box").mousedown(function() { 
     $('.box').addClass('clicked'); 
    }); 
    $(".box").mouseleave(function() { 
     if ($(this).hasClass('clicked')){ 
      $(this).removeClass('clicked'); 
      alert("Hello world!"); 
     } 
    }); 
}); 

Le mouseleave ne continuera si .box a la classe CSS clicked et supprime ensuite la classe, l'arrêt de la mouseleave d'être déclenché à nouveau.

+0

Thanx! Cela fonctionne exactement comme je le veux! – user1451032

+0

Pas de problèmes, heureux d'aider –

+0

(Ne pas oublier d'accepter une réponse si vous sentez que votre problème a été résolu de manière adéquate) –

0

Juste délie l'événement après sa déclenché:

$(".box").mousedown(function() { 
    $(this).mouseleave(function(){ 
     $(this).unbind('mouseleave'); 
     alert("Hello world!"); 
    }) 
})