FAQ MooTools
FAQ MooToolsConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, dernière mise à jour : 15 juin 2021
- Comment ajouter du texte à un élément div, span... ?
- Comment ajouter/supprimer une classe ou vérifier qu'elle existe ?
- Comment récupérer la taille d'un élément ?
- Comment gérer les styles CSS ?
- Comment récupérer la nature d'un élément ?
- Comment récupérer la valeur sélectionnée d'une liste déroulante ?
- Comment récupérer les valeurs des checkbox sélectionnées ?
<div id
=
"id_div"
>
Texte déjà présent.
</div>
$(
'id_div'
).appendText
(
'Texte ajouté.'
);
Vous pouvez préciser la position :
//Valeur possible : before, after, top, bottom
$(
'id_div'
).appendText
(
'Texte ajouté.'
,
'before'
);
Tout d'abord, nous allons vérifier si l'élément a une certaine classe. Pour ce faire, on appelle la méthode hasClass avec comme paramètre le nom de la classe recherchée. Si la classe existe sur l'élément, alors la méthode renvoie true, sinon false :
$(
'id_element'
).hasClass
(
'ma_classe'
);
Si la classe n'est pas trouvée, on peut la rajouter avec la méthode addClass. Cette méthode ne rajoutera rien si la classe est déjà présente sur l'élément :
$(
'id_element'
).addClass
(
'ma_classe'
);
Vu qu'on vient de voir que l'on pouvait ajouter une classe, on peut très bien imaginer vouloir en retirer une, c'est pourquoi il y a la méthode removeClass :
$(
'id_element'
).removeClass
(
'ma_classe'
);
Mieux encore, avec la même instruction, on peut ajouter la classe si elle n'est pas présente et sinon la retirer. C'est la méthode toggleClass qui permet cette inversion :
$(
'id_element'
).toggleClass
(
'ma_classe'
);
Nous pouvons récupérer la largeur et hauteur d'un élément avec la méthode getSize() :
<input type
=
"text"
id
=
"id_input"
value
=
"Je suis un petit texte mais quand même."
/>
<div id
=
"id_div"
style
=
"width:250;height:150;overflow-x:scroll;overflow-y:scroll;border:solid 1px black;"
>
<p>Lorsque nous sommes en bas d'une page ou bien d'un élément avec des barres de défilement,</p>
<p>nous désirons parfois retourner au début de cet élément en un seul clic.</p>
<p>Vu qu'il vaut mieux parfois un petit dessin qu'un long discours,</p>
<p>ceci est un petit test sans prétention aucune.</p>
<p>Il implémente de manière significative</p>
<p>une méthode fort pratique et qui s'appelle :</p>
<p><a href
=
"#1"
onclick
=
"$('id_div').scrollTo(0, 0); return false;"
>
ScrollTo</a></p>
<p>Ici, c'est du bourrage pour obtenir la scrolbar horizontale :</p>
--------------------------------------- SansIntérêtSansIntérêtSansIntérêtSansIntérêtSansIntérêt ---------------------------------------
</div>
alert
(
$(
'id_input'
).getSize
(
).
x);
//IE : 146 FF : 146
alert
(
$(
'id_input'
).getSize
(
).
y);
//IE : 22 FF : 22
alert
(
$(
'id_div'
).getSize
(
).
x);
//IE : 250 FF : 252
alert
(
$(
'id_div'
).getSize
(
).
y);
//IE : 150 FF : 152
C'est la largeur visuelle de la case, mais nous pouvons obtenir la largeur réelle de l'élément, avec le texte "caché" et accessible par les barres de défilement. Nous utilisons alors getScrollSize() :
<input type
=
"text"
id
=
"id_input"
/>
<div id
=
"id_div"
style
=
"width:250;height:150;overflow-x:scroll;overflow-y:scroll;border:solid 1px black;"
>
<p>Lorsque nous sommes en bas d'une page ou bien d'un élément avec des barres de défilement,</p>
<p>nous désirons parfois retourner au début de cet élément en un seul clic.</p>
<p>Vu qu'il faut parfois mieux un petit dessin qu'un long discours,</p>
<p>ceci est un petit test sans prétention aucune.</p>
<p>Il implémente de manière significative</p>
<p>une méthode fort pratique et qui s'appelle :</p>
<p><a href
=
"#1"
onclick
=
"$('id_div').scrollTo(0, 0); return false;"
>
ScrollTo</a></p>
</div>
alert
(
$(
'id_input'
).getScrollSize
(
).
x);
alert
(
$(
'id_input'
).getScrollSize
(
).
y);
alert
(
$(
'id_div'
).getScrollSize
(
).
x);
alert
(
$(
'id_div'
).getScrollSize
(
).
y);
Pour ajouter un ou plusieurs styles CSS, nous utilisons les méthodes setStyle et setStyles. On leur fournit en paramètres les couples style - valeur.
Partons d'une div :
<div id
=
"id_div"
style
=
"background-color:#6699FF"
>
La div.</div>
Nous pouvons lui ajouter par exemple une hauteur, une police et une bordure :
$(
'id_div'
).setStyle
(
'height'
,
'40px'
);
$(
'id_div'
).setStyles
({
border
:
'3px solid #333'
,
font
:
'20px Arial'
}
);
Pour récupérer un ou plusieurs styles, nous nous servons des méthodes jumelles
getStyle et getStyles :
alert
(
$(
'id_div'
).getStyle
(
'background-color'
));
//Résultat : #6699FF
var les_styles =
$(
'id_div'
).getStyles
(
'height'
,
'border'
);
alert
(
les_styles.
height);
//40px
alert
(
les_styles.
border);
//#333 3px solid
Il n'y a malheureusement pas les méthodes identiques pour supprimer un ou plusieurs
styles. Donc nous passons par removeProperty qui supprime tous
les styles :
$(
'id_div'
).removeProperty
(
'style'
);
Pour retirer un seul style, nous vous proposons de le mettre à vide :
$(
'id_div'
).setStyle
(
'background-color'
,
''
);
Pour récupérer la nature d'un élément, on cherche son tag :
<div id
=
"id_div"
>
Que suis-je ?</div>
alert
(
$(
'id_div'
).get
(
'tag'
));
//Résutlat : div
À savoir, nous pouvons aussi faire une vérification par le biais de la méthode
match. Par exemple, regardons si l'élément est une div :
alert
(
$(
'id_div'
).match
(
'div'
));
//Résutlat : true
Si la liste n'accepte qu'une sélection :
<select id
=
"id_select"
name
=
"fruits"
>
<option value
=
"pomme"
>
Pomme</option>
<option value
=
"poire"
>
Poire</option>
<option value
=
"fraise"
selected>Fraise</option>
<option value
=
"cerise"
>
Cerise</option>
</select>
La méthode getSelected renvoie un tableau d'une seule cellule :
var selection =
$(
'id_select'
).getSelected
(
);
alert
(
selection[
0
].
value);
//Résultalt : fraise
Si, par contre, nous avons une liste qui accepte plusieurs sélections :
<
select
id=
"id_select"
name
=
"fruits[]"
multiple>
<
option
value=
"pomme"
>
Pomme</
option
>
<
option
value=
"poire"
selected>
Poire</
option
>
<
option
value=
"fraise"
selected>
Fraise</
option
>
<
option
value=
"cerise"
>
Cerise</
option
>
</
select
>
Le tableau renvoyé sera constitué de plusieurs cellules :
var selection =
$(
'id_select'
).getSelected
(
);
//Résultalt : selection = [objet,objet]
// selection[0].value = poire
// selection[1].value = fraise
Imaginons une série de checkbox ayant le même nom et dont deux sont sélectionnées :
<input type
=
"checkbox"
name
=
"mon_nom"
value
=
"value_1"
/>
Valeur 1
<input type
=
"checkbox"
name
=
"mon_nom"
value
=
"value_2"
checked />
Valeur 2
<input type
=
"checkbox"
name
=
"mon_nom"
value
=
"value_3"
/>
Valeur 3
<input type
=
"checkbox"
name
=
"mon_nom"
value
=
"value_4"
checked />
Valeur 4
<input type
=
"checkbox"
name
=
"mon_nom"
value
=
"value_5"
/>
Valeur 5
Nous pouvons obtenir les valeurs de toutes celles qui sont cochées.
Plusieurs possibilités s'offrent à nous. La première est assez intuitive et directe.
Elle consiste à rechercher les input qui ont le même nom, de filtrer
sur ceux qui ont un attribut checked et d'en récupérer la valeur sous forme de tableau :
var valeurs =
$$(
'input[name=mon_nom]:checked'
).get
(
'value'
);
alert
(
valeurs);
Toutefois, certains anciens navigateurs sont réticents et préfèrent d'autres syntaxes.
Nous avons donc en seconde position l'utilisation de map qui va
associer une fonction à chaque élément du tableau :
var valeurs =
$$(
'input[name=mon_nom]:checked'
).map
(
function(
e) {
return e.
value;
}
);
alert
(
valeurs);
Une troisième version consiste quant à elle à creer un nouvel objet selon le résultat du filtre.
Elle se rapproche fortement de la précédente car elle associe également aux éléments de l'objet une fonction :
var valeurs =
$$(
"input[name='mon_nom']"
).filter
(
function(
e) {
if(
e.
checked) return e;
}
);
alert
(
valeurs[
0
].
value);
alert
(
valeurs[
1
].
value);
//Notez que pour récupérer uniquement le premier élément coché, on peut utiliser cette instruction :
var valeur =
$$(
"input[name='mon_nom']"
).filter
(
function(
e) {
if(
e.
checked) return e;
}
)[
0
].
value;
alert
(
valeur);
Comme vu dans le dernier bout de code, nous pouvons pousser l'audace et redéfinir une méthode
de Array pour ne sortir que la première checkbox cochée, et ce n'est qu'un exemple :