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 :

Scripts JQuery ne fonctionnent plus sur html chargé avec Load()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Par défaut Scripts JQuery ne fonctionnent plus sur html chargé avec Load()
    Bonjour,

    - Je charge une page avec Load().


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $(function(){
     
    	var deployer;														
            deployer = "";
           	var url ="";
     
            // on charge une page (page01.html) avec un load dans une div qui apparait en slide (vers le bas)
            function deploydown() {
                url = $("#"+deployer.substring(0,6)+' a').attr('href');
                $("#"+deployer.substring(0,6)).slideDown({duration: 700, easing: 'easeOutCirc'}).load(url); 
    			}
    });


    - Cette sous page contient un script JQuery (plugin scrollTo) qui permet de faire un scroll horizontal.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // On cible les a des classes "boutonhorizon"
    $('.boutonhorizon a').click(function(){
        				// on cible la div #main et on glisse jusqu'à l'attribut en class exemple : #volet02
       				$('#main').scrollTo( $('#' + $(this).attr('class')), 800 , {easing:'easeOutCirc'}, {axis:'x'} );
    		});


    Mon problème est que ce code de glissement horizontal de ma sous page marche parfaitement lorsque je lance ma sous page de manière indépendante, mais il ne fonctionne plus lorsque la page est inclue via load() dans ma page principale.


    J'ai beau tout tenter je n'y arrive pas.

    Pouvez vous m'indiquer la solution si toutefois il y en a une ?
    je crois qu'il s'agit d'un problème de ciblage en ligne 4.


    merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Un grand classique désormais

    => live() , on() ou délégate

    sinon avec les methodes ajax de jquery il faut declarer le dataType html et faire attentions que le script soit bien syntaxé (point virgules en fin d'instructions )
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Par défaut
    Merci beaucoup je suis déjà en train de me pencher sur ce grand classique.

    j'ai regardé du côté de live() cela semble déprécié dois je me pencher dessus du coup ?

    sinon dans mon cas en deux mots quelle est l'utilité des ces fonctions ?
    (elles semblent d'usage proches)


    merci encore

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    live est en effet déprécié.

    on() permet d'attribuer des evenements pas anticipation avant leur instanciation sur la page
    delegate() permet l'heritage d'evenements sur les enfants d'un objet

    Dans ton cas de figure je vois trois manières de résoudre le problème:

    - soit tu attribues par anticipation le script de scroll avant que l'objet ne soit chargé avec on ou delegate, du coup plus besoin de script dans le html loadé. le load du html suffit, le script étant présent par anticipation

    - soit tu passes des load() à une autre methode d'ajax qui te permette de preciser un datatype html et alors le script sera interprété

    - soit tu fais un load() pour le html puis dans son callback un .getScript() pour la partie script
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Profil pro
    Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Par défaut
    Merci je sent mieux les nuances et les possibilités.
    Dans mon cas comme tu as vu il y a un slide qui fait apparaitre une gallerie d'image (le html chargé).
    En fait lorsqu'on clique sur divers bouton on zappe entre divers html qui s'ouvrent et se referment.

    Donc par rapport à ta dernière réponse j'ai une nouvelle question :
    Avant de partir sur une piste qui me semble appropriée, mais qui pourrait être problématique parmi les 3 voix que tu indique :

    - Laquelle te semble la mieux appropriée dans mon cas où je peux à tout moment loader une autre page à la place d'une autre en fonction du bouton cliqué sur la page d'origine ?

    - Dois je prévoir une fonction pour "supprimer de la mémoire" chaque page quand elle se referme lorsque la nouvelle page se charge afin d'éviter tout conflit ?

    merci pour ton aide et tes réponse qui m'aident bcp

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ta navigation se fait intégralement en ajax ?

    je ne vois pas pourquoi tu aurais des conflits entre tes pages.

    Personnellement sur mes sites les scripts nécessaires à la navigation sont tous présent au chargement initial.
    Eventuellement j'utilise un getScript pour un script particulier et lourd qui ne serait spécifique qu'à une seule page loadée...

    Cela raccourcit les temps de chargements des pages appelées en ajax
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/07/2009, 15h02
  2. DLL qui ne fonctionne plus sur un ordinateur
    Par Mikmacer dans le forum C++
    Réponses: 1
    Dernier message: 22/07/2008, 09h07
  3. C++ programme ne fonctionne plus sur autre PC
    Par Benjimo dans le forum C++
    Réponses: 5
    Dernier message: 13/06/2007, 10h58
  4. [AJAX] Script ajax ne fonctionne pas sur IE :( !
    Par Funattitude dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/08/2006, 18h02
  5. les actions ne fonctionnent plus sur ma page
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 47
    Dernier message: 14/11/2005, 13h45

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