Vous ne pouvez pas faire nativement, car cela nécessitera un certain travail sur le terrain.
Quelque chose comme ça fonctionnerait, mais il doit y avoir une meilleure solution:
var state = {a:false,b:false};
$('.a').mouseenter(enterA);
$('.a').mouseout(exitA);
$('.b').mouseenter(enterB);
$('.b').mouseout(exitB);
function enterA(){ state.a = true }
function exitA(){ state.a = false }
function enterB(){ state.b = true }
function exitB(){ state.b = false }
Et puis si vous avez jQuery 1.4.2, vous pouvez lier plusieurs événements, il faut donc ajouter ces après les premiers événements.
$('.a,.b').mouseout(function(){
//we're outside of both blocks
if(!state.a && !state.b)
{
//do something
}
});
Ceci se déclenchera lorsque vous avez quitté A ou B, et vous êtes également en dehors de l'autre. Je pense que c'est ce que vous vouliez dire.
Juste un point sur la syntaxe JavaScript - cet extrait fait à aucun sens, comme vous avez pu le constater de la façon dont il ne fonctionne pas . Il se traduirait par 'if $ (' textarea.commentField ') et aussi $ (' span.loginPrompt ') évaluer en booléen vrai, oh attend, nous essayons d'exécuter une méthode sur la condition if ... qui est un booléen, et n'a pas de méthodes, mais aha, Javascript attend un {ou une seule déclaration ici ... QUOI? Oh, erreur de syntaxe '. –
Je suggère de décrire la fonctionnalité réelle que vous voulez plutôt que la façon dont vous essayez de l'implémenter. Si vous décrivez la fonctionnalité, il est probable que nous serons en mesure de vous proposer une meilleure solution que de simplement vous donner un moyen d'implémenter un ** ET ** entre deux événements dans jQuery. – tvanfosson
Je dirais que vous devez donner une balise html ... il doit y avoir une meilleure façon de le faire et cela dépend de votre code html. – Reigel