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 :

Modifier balise img


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2009
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Modifier balise img
    Bonjour à tous,

    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div class="main">
        <h3>Titre</h3>
        <div>
    	<p>voici du texte</p>
    	<img src="img.jpg"></img>
    	<button class="clickme">Click me</button>
        </div>
    </div>
    je souhaite recuperer ce code en jquery quand je clic sur le bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(function(){
     
        $(".clickme").click(function(){
     
        var value = $(this).parent().parent().html();
     
        });
     
    });
    Ce que je voudrais faire maintenant, c'est supprimer la balise image de la variable, mais pas du DOM. Merci d'avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner & Intégrateur web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webdesigner & Intégrateur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    La balise <img /> est auto fermante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <img src="img.jpg" />

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (function($){
    $('.clickme').live('click', function() {
        console.log(this.parentNode.parentNode.childNodes);
      });

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner & Intégrateur web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webdesigner & Intégrateur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Oups, erreur de navigation au clavier, désolé.

    Évite d'utiliser $(this) quand tu le peut, le code qui suit te renvoie un tableau avec tous les enfants de ta div (donc le p, l'img et le button), comme ça tu peut les manipuler comme tu veut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      $('.clickme').live('click', function() {
        var donnees = this.parentNode.childNodes;
      });
    C'est ça ? Car je suis ne pas sûr d'avoir exactement compris ce que tu veut récupérer

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Évite d'utiliser $(this) quand tu le peut


    Pourquoi ça ???
    Au contraire, il faut autant que possible utiliser $(this) afin de continuer à utiliser des objets jQuery et ne pas casser la logique du framework.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var value = $(this).parent('.main').clone();
    value.children().remove('img');
    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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner & Intégrateur web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webdesigner & Intégrateur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    C'est une question de performance, si tu n'as pas besoin de fonctions jQuery par la suite, c'est inutile de passer l'objet this à la moulinette de $().
    Du JS brut sera toujours plus rapide que de passer par une framework, du moins pour les manipulations de base.
    Je dis pas ça dans le vide, j'ai déjà fais des tests et j'ai vus un tas de posts qui parlent de ça.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner & Intégrateur web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webdesigner & Intégrateur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    @Bovino: j'ai fait des tests.
    Ta méthode est environs 40% plus longue à se réalisé et résulte en un peu plus de 40% d'appels en plus. Si t'as quelques scripts sur ta page, ça peut vite se ressentir.

  7. #7
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben, ça me semble évident... et j'ai du mal à voir quel script jQuery pourrait être plus performant que du JavaScript pur et écrit spécifiquement
    A titre d'exemple :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    		<title>Untitled Document</title>
    		<script type="text/javascript" src="jquery-1.6.js"></script>
    		<script type="text/javascript">
                            function jq(unid){
                                    var d1 = new Date();
                                    var test, i;
                                    for(i=0; i<50000; i++){
                                            test = $('#'+unid);
                                    }
                                    alert(new Date() - d1);
                            }
                            function js(unid){
                                    var d1 = new Date();
                                    var test, i;
                                    for(i=0; i<50000; i++){
                                            test = document.getElementById(unid);
                                    }
                                    alert(new Date() - d1);
                            }
                    </script>
    	</head>
    	<body>
    		<div id="test">Div de test</div>
    		<div><button onclick="jq('test');">jQuery</button></div>
    		<div><button onclick="js('test');">JavaScript</button></div>
    	</body>
    </html>
    est particulièrement éloquent.
    Mais lorsque l'on utilise un framework, il est préférable de l'utiliser au maximum.
    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

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner & Intégrateur web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webdesigner & Intégrateur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Je voit vraiment pas pourquoi, tu peut t'expliquer s'il te plaît?

  9. #9
    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
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var value = $(this).parent('.main').clone();
    value.children().remove('img');
    L'idée est bonne, mais pas le script...
    1. parents(".main")
    2. value.children("div").children().remove('img');

    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
    $(function(){
    	// Ce que je voudrais faire maintenant, c'est supprimer la balise image de la variable, mais pas du DOM. Merci d'avance
    	$(".clickme").click(function(){
    		var value = $(this).parents(".main").clone();
     
    		/*
    		 * debug avec Firebug
    		 * 0 <p>
    		 * 1 <img src="img.jpg">
    		 * 2 <button class="clickme">
    		 */
    		$.each(value.children("div").children(), function(i, item){
    			console.log(i, item);
    		});
     
    		// http://api.jquery.com/remove/
    		value.children("div").children().remove('img');
     
    		/*
    		 * debug avec Firebug
    		 * 0 <p>
    		 * 1 <button class="clickme">
    		 */
    		$.each(value.children("div").children(), function(i, item){
    			console.log(i, item);
    		});
    	});

    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. modifier les attributs alt des balises img
    Par fredericbdr dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2010, 14h11
  2. [DOM] DOM - modifier attributs balise IMG
    Par on dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/08/2007, 17h15
  3. [XHTML][w3c] attribut border de la balise <img>
    Par Sinclair dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/01/2005, 13h35
  4. usage balise <img src ..> dans un fichier inc.
    Par faamugol dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 14h09
  5. balise <img> dans un tableau avec firefox
    Par yannock dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/10/2004, 16h44

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