IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

la condition if avec Jquery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut la condition if avec Jquery
    Bonjour,

    j'aimerais savoir si la condition " if " fonctionne avec jquery ?

    j'aimerais faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $(document).ready(function(){
    if(!$(".articles").css("display:none"))
    		$("#suite").html("Cliquez sur le texte pour cacher l'extension de l\'articles");
    	if(!$(".articles").css("display:block"))
    		$("#suite").html("Cliquez sur le texte pour lire la suite de l\'articles");
    });
    Si vous ne saisissez pas le sens, voila ce que j'ai voulu faire:

    j'aimerais que lorsque la div articles est afficher (visible) le texte : ... cacher extension... remplace celui de ...lire la suite...
    de même dans l'autre sens, lorsque la div articles est cacher on affiche le texte ...lire la suite...

    est-ce que ça a un sens , ais-je compris le principe ??

    merci pour vos réponses

    PS: j'utilise ce code dans un toggle Jquery pour la récuperation d'articles PHP via Mysql

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Alors oui, if fonctionne très bien avec jQuery, mais ton utilisation est mauvaise
    Dans ta condition, tu sélectionnes des objets jQuery ($(".articles")), puis tu leur affectes un style CSS (.css("display:none")).
    Or une méthode jQuery renvoie systématiquement l'objet qu'elle vient de traiter, donc dans ton cas, la condition sera toujours équivalente à true et son not équivalent à false !
    Utilise plutôt le sélecteur :visible
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut
    merci pour vos réponses,

    j'ai suivi vos conseils:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($(".articles").css("visibility:hidden"))
    	$("#suite").html("Cliquez sur le texte pour cacher l'extension de l\'articles");
    if($(".articles").css("visibility:visible"))
    	$("#suite").html("Cliquez sur le texte pour lire la suite de l\'articles");
    j'ai egalement essayer avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($(".articles").hide())
    	$("#suite").html("Cliquez sur le texte pour cacher l'extension de l\'articles");
    if($(".articles").show())
    	$("#suite").html("Cliquez sur le texte pour lire la suite de l\'articles");
    ça ne change rien , l'effet désiré n'a pas lieu

    j'ai également essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(document.getElementById('article').style.display='block')
    	document.getElementById('suite').innerHTML='Cliquez sur le texte pour cacher l\'extension de l\'articles';
    if(document.getElementById('article').style.display='none')
    	document.getElementById('suite').innerHTML='Cliquez sur le texte pour lire la suite de l\'articles';
    une fois de plus merci pour vos réponses

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Plop,
    essayes plutot un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if( $(".articles:visible").length > 0 )
    {
      $("#suite").html("Cliquez sur le texte pour cacher l'extension de l\'articles");
    }
    else
    {
      $("#suite").html("Cliquez sur le texte pour lire la suite de l\'articles");
    }

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.getElementById('article').style.display='block')

    Là, tu fais une affectation, pas une comparaison
    Mais essaye la solution de erox44 qui correspond à ta demande !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut
    le problème a l'air plus compliquer que prévu et il se peut qu'il y ait des conflits
    d'affichage :

    je m'explique :

    chaque page de mon site récupère des articles (titre, date , sujet apercu "visible" et sujet restant "cacher" - au click devient "visible")
    ces articles sont récupérer avec php via mysql

    pour les solutions que vous m'avez fourni le texte ne change pas


    en piece jointe voici la représentation de ce qui se passe: si ça peut vous aider à m'expliquer mes erreurs
    Nom : exemple-probleme.jpg
Affichages : 8766
Taille : 174,2 Ko

    De plus j'a i un autre probleme tout ce que j'essaie de faire en vous posant ces questions: est pour deux buts:

    1er: signaler aux visiteurs qu'en cliquant sur le texte ils peuvent lire la suite (cahcer)
    2eme but: le toggle de jquery appliqué sur toute la partie visible de l'article empeche de lire les liens (hypertext) contenu dans cette article visible - car il n'y a pas de problème sur la partie cacher(lorsqu'elle est révélée)

    j'espère que je vous ai pas embrouiller avec mes explications , merci

    De plus j'ai remarquer que lorsque ça marche (changement de texte)
    cela ne s'applique que pour le premier article les autres sont laissé a l'abandon

    Une idée sur ce probleme

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Par rapport au message n° 1, exemple avec is(":visible") et fadeToggle() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta http-equiv="X-UA-Compatible" content="chrome=1">
    	<meta charset="utf-8">
    	<meta name="Author" content="Daniel Hagnoul">
    	<title>Forum jQuery</title>
    	<style>
    		body { background-color:#dcdcdc; color:#000000; font-family:sans-serif; font-size:medium; font-style:normal; font-weight:normal; line-height:normal; letter-spacing:normal; }
    		h1,h2,h3,h4,h5 { font-family:serif; }
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img { margin:0px; padding:0px; }
            img {border:none; }
    		h1 { font-size:2em; text-shadow: 4px 4px 4px #bbbbbb; text-align:center; }
    		p { padding:6px; }
            ul,ol,dl {list-style:none; padding-left:6px; padding-top:6px; }
            li {padding-bottom:6px; }
    		.conteneur { width:95%; min-width:800px; min-height:500px; margin:12px auto; background-color:#FFFFFF; color:#000000; border:1px solid #666666; }
     
    		/* TEST */
    		.articles {display:none; width:100px; height:100px; background-color: red; border:1px solid gray; }
        </style>
    </head>
    <body>
    	<h1>Forum jQuery</h1>
    	<section class="conteneur">
    		<div class="articles"></div>
    		<div id="suite">La suite ...</div>
    	</section>
    	<script charset="utf-8" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
        <script>
            $(function(){
    			$("#suite").click(function(){
    				$(".articles").fadeToggle(800, function(){
    					if ($(this).is(":visible")){
    						$("#suite").html("Cliquez sur le texte pour cacher l'extension de l'articles");
    					} else {
    						$("#suite").html("Cliquez sur le texte pour lire la suite de l'articles");
    					}
    				});
    			});
            });
        </script>
    </body>  
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2007, 12h37
  2. Réponses: 1
    Dernier message: 09/05/2007, 10h57
  3. [js]problèmes avec jquery
    Par pomgnon dans le forum jQuery
    Réponses: 3
    Dernier message: 30/03/2007, 20h47
  4. [JQUERY] Comment appeler une fonction php avec jquery
    Par popogendarme dans le forum jQuery
    Réponses: 1
    Dernier message: 20/03/2007, 16h07
  5. [MySQL] Condition IN avec sous requête
    Par emphase dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/02/2007, 01h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo