11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai dans mon HTML des hr qui changent de width grace au Jquery.

Je voudrais par la suite, récupérer le nombre de hr qui ont une meme valeur de width transformée.

Apparemment, ma variable ne marche pas, et je ne comprends pas pourquoi.

var $nbePara = $('div[width="25"]').length();


Je pense que ca doit être la partie entre crochets qui bug, mais je ne vois pas pourquoi et je ne trouve pas sur le net...

Si vous avez une idée, merci pour votre aide!!!!!!!!!!
Modifié par aivyl (13 Sep 2013 - 11:27)
Merci Renard13 pour ta réponse.
Apparemment, ce n'est pas ca..

Voici alors mon code, si ca se trouve c'est tout le reste qui ne va pas.. Attention je ne suis pas une experte en Jquery! Smiley smile

En gros, à chaque clic sur l'image de chaque li, l'image et le hr se décalent pour laisser apparaitre le p qui est caché à la base.
Ensuite, je veux compter le nombre d'images ou de hr qui sont décalées, pour créer une condition qui réduit la taille du "cache". J'espère que je suis claire! Smiley smile

<section class="big">
            <ul>
            	<li><img src="images/btn-droite.png" alt="test" width="25" /> <hr/>
                    <p>blabla</p>
                </li>
                <li><img src="images/btn-droite.png" alt="test" width="25" /> <hr/>
                    <p>blabla</p>
                </li>
            </ul>

            <div id="photo">
            	<img src="images/test.png" alt="test"  height="250" />
                <div id="cache">
                
                </div>
            </div>
</section>


$('.big li').click(function(){		
			var $iImg = $(this).find('img');
			var $iHr = $(this).find('hr');
			var $iTexte = $(this).find('p');
			$iImg.add($iHr).animate({
				marginLeft: "285px",
				}, 1000)
			$($iTexte).show(1000);
		});
		var $nbePara = $('hr[marginLeft=285px]').length();


Voila, merci beaucouuuup pour ton aide, je suis bloquée là...!
Bonjour.

Tu ne peux pas sélectionner un élément comme ça $('hr[marginLeft=285px]'), il faut le voir comme un sélecteur CSS, c'est à dire que ça fonctionnerait uniquement si marginLeft serait un attribut du hr :
<hr marginLeft="285px" />


Enfin bref, le plus simple serait d'ajouter une class à ton hr que tu redimensionnes.

$iImg.add($iHr).addClass('ml285').animate({marginLeft: "285px"}, 1000)

Et donc là ce code fonctionnerait :

var nbePara = $('hr.ml285').length();
Merci SolidSnake, effectivement vu comme ca, je comprends mieux..

En revanche, ca ne fonctionne pas non plus.
J'ai une petite ligne de code que je teste avant ou apres la variable : avant, elle fonctionne, apres elle ne fonctionne plus.

Je me demande si c'est pas toute la méthode qui n'est pas bonne.
Qu'en penses tu?

Merci!!
Nan, c'est moi qui n'ai pas fait attention, il faut virer les parenthèses sur length :

var nbePara = $('hr.ml285').length;

C'est une propriété, pas une fonction... Sorry
Effectivement, merci de ton aide!!

J'ai encore besoin de toi en revanche, car ca ne compte pas du coup... Smiley smile
Je fais un test en affichant, et ca reste toujours à 0, meme quand mes hr changent de margin-left..

Est ce que Jquery compte instantanément ?
Ou est ce que ca ne marche pas du fait que la margin-left est gérée par animation Jquery ?
Ou autre??

Encore merci si tu as une idée!
Effectivement si tu ne regardes pas en permanence la valeur de du nombre hr il ne le regardera qu'une fois.

Pour voir ce nombre évoluer tu peux par exemple mettre ton "calcul" du nombre de hr dans l’événement click.
http://jsfiddle.net/yFs4H/
Après, ça dépendra vraiment de ce que tu comptes en faire avec.
Ok merci, je ne savais pas..

Donc ca marche, et c'est bien ce que je veux faire.
Maintenant, je veux mettre une condition la dessus, et la ca ne marche plus, encore une fois!
http://jsfiddle.net/yFs4H/18/

Est ce que mon sauveur aurait l'amabilité de m'aider une derniere fois?! Smiley smile

Merci!
Naaaaan, serieux?! C'était juste ca! Et j'y ai meme pas pensé dans tous mes tests!

C'est fini, je te dois combien? Smiley smile

Merci pour ton aide et ta patience en tout cas!!!!!