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 :

.on('click'): Preventdefault() fonctionne pas pour tous les liens


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut .on('click'): Preventdefault() fonctionne pas pour tous les liens
    Bonjour,
    J'ai un problème qui me rend fou dans mon code.
    J'ai une page index qui contient la mise en page. A l'aide d'un .load() je charge une page php/jquery qui va s'occuper de verifier si l'utilisateur est loggé ainsi que lui renvoyer la page qu'il veut avec un .on('click').
    J'ai défini donc que tous mes liens de la classe "links" doivent être intercepter. Le problème c'est que pour mon lien logout tout fonctionne mais par contre pour un autre liens sur une page lorsque je click dessus j'ai l'erreur:
    Not Found

    The requested URL /OrderNow/store was not found on this server.
    Comme si mon .preventDefault(); ne fonctionnais pas pour ce lien...

    Index.html :
    Code html : 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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <!doctype html>
    <html class="no-js" lang="en">
      <head>
        <meta charset="utf-8" />
        <!--meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> -->
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
        <!--meta name="viewport" content="width=device-width, initial-scale=1.0" /> -->
        <title>OrderNow beta 1.0</title>
        <link rel="stylesheet" href="css/foundation.css" />
        <link rel="stylesheet" href="css/styles.css" />
        <link rel="stylesheet" href="css/foundation-icons.css" />
        <link rel="stylesheet" href="css/foundation-icons.ttf" />
        <script src="js/vendor/modernizr.js"></script>
      </head>
    <body>
    <div class="off-canvas-wrap" data-offcanvas>
      <div class="inner-wrap">
      <nav class="tab-bar">
            <section class="left-small">
              <a class="left-off-canvas-toggle menu-icon" href="#"><span></span></a>
            </section>
            <section class="middle tab-bar-section">
              <img src="img/logo1.png" alt="OrderNow" class="logo" /> <!-- LOGO __ -->
              <a class="link-panier" href="#"><div id="panier"></div></a> <!-- PANIER DANS TOP BAR ___ -->
            </section>    
        </nav>
    <!-- MENU ____________________________________________________________________ -->
      <div id="main-menu">
      </div>
    <!-- /MENU ___________________________________________________________________ -->
        <section class="main-section">
    <!-- MAIN CONTAINER __________________________________________________________ -->		  
          <div class="page-container">
          </div>
    <!-- /MAIN CONTAINER _________________________________________________________ -->  
        </section>
     
      <a class="exit-off-canvas"></a>
     </div>
    </div>
    <script src="js/vendor/jquery.js"></script>
    <script src="js/foundation.min.js"></script>
    <script>
      $( document ).ready(function() {
        $(".page-script").load("../OrderNow/globals/page-loader2.php"); /* Script de gestion de page */
        $("#main-menu").load("../OrderNow/modules/menu/menu.html"); /* INCLUDE MENU AJAX */
        $("#panier").load("../OrderNow/modules/checkout/panier.html"); /* INCLUDE PANIER AJAX */  
      
        $(document).foundation(); 
      });
    </script>
    <script class="page-script"></script>
    </body>
    </html>
    Mon page loader .php
    Code php : 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
    <?php session_start();
    $get_page =$_GET['page'];
     
    if (isset($_SESSION["Id"])) { //si il existe une session
    	if ($_SESSION['is_localised'] != true) { //si l'utilisateur n'a pas encore été utilisé
    		require_once $_SERVER['DOCUMENT_ROOT']."/OrderNow/globals/localise/localise.js"; // on localise l'utilisateur
    		}
    	$is_logged = true;
    	}
    else { //sinon l'utilisateur n'est pas logué
    	$is_logged = false;
    	}
    if ($_GET['page'] == "logout") {
    	$is_logged = false;
    	session_destroy();
    	}
    ?>
     
    <script>
    var is_logged = "<?php echo $is_logged; ?>";
    var get_page = "<?php echo $get_page; ?>";
    var first_login = true;
    $(document).ready(function() {
    	$('a.links').on('click', function(e) {
    	    e.preventDefault();
    	    var first_login = false;
    	    var page_href = $(this).attr("href");
    	    if (page_href == "store"){
    	    	$(".page-container").load("../OrderNow/modules/store/store.html");
    	    }
    	    else if (page_href == "logout"){
    	    	$(".page-container").load("../OrderNow/globals/page-loader2.php?page=logout");
    	    }
    	});
    	if ((is_logged == true) && (first_login == true)){
    		$(".page-container").load("../OrderNow/modules/store/storelist.html");
    		}
    	else if (is_logged == false){
    		$(".page-container").load("../OrderNow/modules/login/login.html");
    	}
    });
    </script>
    Ma page ou mon lien ne fonctionne pas
    Code html : 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
    <div class="form-box"> 
    	<h1>Magasins</h1>
    	<div class="row collapse">
    		<div class="small-10 columns">
    			<input type="text" placeholder="Rechercher">
    		</div>
    		<div class="small-2 columns">
    			<a href="#" class="button postfix"><i class="ico-big fi-magnifying-glass"></i></a>
    		</div>
    	</div>
    	<h3>Proche de vous</h3>
    	<hr>
    	<div class="shop-list">
    		<?php
                    session_start();
                    require_once $_SERVER['DOCUMENT_ROOT']."/OrderNow/globals/db-connect.php";//connection a la base de donnée     
     
                    //on recupère le nom et l'adresse de tous les shops disponibles
                    $query = mysqli_query($link, "SELECT nom, ville, npa, adresse  FROM Stores LIMIT 0,5"); //on recupère les 5 magasins les plus proches
     
                    while ($data = mysqli_fetch_assoc($query)) { //!//FONCTION A REMPLACER PAR DU JSON POUR ETRE PROPRE! ?> 
    			<div class="row">
    				<div class="small-8 columns"><a class="links shop-links" href="store"><?php print $data["nom"]; ?></a>
    				</div>
    				<div class="small-4 columns"><a class="links city-links" href="#"><?php print $data["ville"]; ?></a>
    				</div>
    				<hr class="hr-list">
    			</div>
    			<?php
                            $nb++;
                    } 
                    ?>
    	</div><!-- liste des shops proches -->
    </div>
    Ma page contenant les liens des menus dont le lien déconnecter qui fonctionne très bien.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!-- MAIN MENU -->
    <aside class="left-off-canvas-menu">
      <ul class="off-canvas-list">
        <li class="li-menu"><label><a class="links lnk-menu" href="logout">Se déconnecter</a></label></li> <!-- titre au sommet -->
        <li class="li-menu"><a href="#"><i class="ico-menu fi-foundation"></i>Maps</a></li>
        <li class="li-menu"><a href="#"><i class="ico-menu fi-torso"></i>Mon compte</a></li>
        <li class="li-menu"><a href="#"><i class="ico-menu fi-clock"></i>Historiques</a></li>
        <li class="li-menu"><a href="#"><i class="ico-menu fi-star"></i>Promotions</a></li>
        <li class="li-menu"><a href="#"><i class="ico-menu fi-info"></i>A propos</a></li>
      </ul>
    </aside>
    Merci d'avance pour votre aide.

    Salutations

  2. #2
    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 : 73
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Toujours le même problème, donc toujours la même réponse

    Pour un code dynamique donc on doit utiliser on() avec deux sélecteurs.

    Différences entre on() avec 1 ou 2 sélecteurs

    Dans votre cas je préconise : $( "body" ).on( "click", "a.links", function(e) { ... });.

    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.)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    Merci pour votre réponse rapide et précise.
    Effectivement votre solution résous mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/05/2008, 16h46
  2. [FTP] fopen qui ne fonctionne pas dans tous les contextes ..
    Par Christophe Charron dans le forum Langage
    Réponses: 6
    Dernier message: 15/06/2006, 10h25
  3. TXMLDocument, ne fonctionne pas sur tous les PC
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/10/2005, 22h33

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