2010-09-27 4 views
2

J'ai un fichier HTML qui a un ensemble de divs avec la classe "block". Je voudrais que ceux-ci glissent en place quand la page se charge, et j'essaie d'utiliser la fonction animée de jQuery pour cela. Cependant, je suis un noob total à jQuery, et je reçois un bogue que les tutoriels au the jQuery site n'aident pas.jQuery Animation, manquant: après l'ID de propriété

Voici mon code:

$(document).ready(function() { 
    $(".block").animate({margin-top: "1%"}, {duration: 200, queue: true}); 
}); 

Le style .block ressemble à ceci:

div.block { 
    width: 18%; 
    float: left; 
    margin: 1%; 
    margin-top: -10%; 
    min-height: 120px; 
} 

Le message d'erreur que je reçois dans Firebug est: ": manquant après id propriété". Alors, comment est-ce que je ne comprends pas cela, et serait la bonne façon d'obtenir un ensemble de blocs à "glisser" pour placer? (J'aimerais idéalement qu'ils glissent l'un après l'autre en succession rapide.)

Voici a link to the page I'm working on au cas où vous auriez besoin de le voir. C'est avec le JS désactivé afin de voir où les blocs devraient apparaître après l'animation.

+0

Essayez '{" margin-top ":" 1% "}'. –

Répondre

3

margin-top n'est pas un identifiant valide par lui-même en JavaScript, donc il doit être entre guillemets, comme ceci:

$(document).ready(function() { 
    $(".block").animate({'margin-top': "1%"}, {duration: 200, queue: true}); 
}); 

Ou jQuery vous permet d'utiliser casquettes pour désigner un -, comme ceci:

$(document).ready(function() { 
    $(".block").animate({marginTop: "1%"}, {duration: 200, queue: true}); 
}); 

En interne, jQuery just converts "margin-top" back to "marginTop". Comme une suggestion globale, puisque la valeur par défaut est de mettre en file d'attente, vous pouvez simplifier votre code à ceci:

$(function() { 
    $(".block").animate({'margin-top': "1%"}, 200); 
}); 
+0

Super! Cela l'a réparé. En attendant, y a-t-il un moyen de faire glisser chaque bloc successif en un à la fois? Autrement dit, mettre un léger décalage entre chaque animation plutôt que de les avoir toutes en même temps? – Andrew

+1

@Andrew - Oui, comme ceci: '$ (". Block "). Each (function (i) {$ (this) .delay (i * 200) .animate ({'margin-top':" 1% " }, 200);}); ' –

+0

Nick - L'inverse n'est-il pas vrai (en ce qui concerne jQuery convertissant' marginTop' en '' margin-top "')? Pour autant que je sache, 'camelCase()' prend ce dernier et le convertit en premier, ce qui semblerait logique puisque c'est la forme correcte pour la propriété de style de l'élément. – user113716