2010-10-25 30 views
5

quand je clique sur #button, il fait tranquillement le 'do something', même si .wrapper est en train d'animer et .wrapper span n'est pas visible. donc ce n'est pas en suivant les règles. Qu'est-ce qui ne va pas?jquery: this.not (': animé') && that.is (': visible') ne suit pas les règles, problème de syntaxe? seulement quelques lignes de code

$('#button').click(function(){ 
    if(
    $('.wrapper').not(':animated') && $('.wrapper span').is(':visible') 
) { 
    //do something 
    } 
}) 
+1

'non (': animation')' est pas un chèque, mais est un sélecteur. donc ça retournera '[]' si tous les '.wrapper''s sont animés – glebm

Répondre

4

Vous avez ici un working demo:

$('#button').click(function(){ 
if( $('.wrapper:animated').length>0) 
{ 
$(".wrapper").text("animating") ; 
} 
    if(
    $('.wrapper:animated').length<1) { 
$(".wrapper").text("not animating") ; 
    } 
}) 
6

C'est un peu plus propre sans les instructions if. working demo

$('#button').click(function(){ 
    $('.wrapper').filter(':animated').text("animating..."); 
    $('.wrapper').filter(':not(:animated)').text("not animating..."); 
})