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

JavaScript Discussion :

Collapse Module - autre image quand le div est expanded


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Collapse Module - autre image quand le div est expanded
    Bonjour,

    J'emploie un code source de dynamicdrive et j'aimerai ajouté un petite chose...

    J'ai ce code :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
     
    //Accordion Content script: By Dynamic Drive, at http://www.dynamicdrive.com
    //Created: Jan 7th, 08'
    //Version 1.3: April 3rd, 08':
    //**1) Script now no longer conflicts with other JS frameworks
    //**2) Adds custom oninit() and onopenclose() event handlers that fire when Accordion Content instance has initialized, plus whenever a header is opened/closed
    //**3) Adds support for expanding header(s) using the URL parameter (ie: http://mysite.com/accordion.htm?headerclass=0,1)
    //April 9th, 08': Fixed "defaultexpanded" setting not working when page first loads
     
    jQuery.noConflict()
     
    var ddaccordion={
     
    	contentclassname:{}, //object to store corresponding contentclass name based on headerclass
     
    	expandone:function(headerclass, selected){ //PUBLIC function to expand a particular header
    		this.toggleone(headerclass, selected, "expand")
    	},
     
    	collapseone:function(headerclass, selected){ //PUBLIC function to collapse a particular header
    		this.toggleone(headerclass, selected, "collapse")
    	},
     
    	expandall:function(headerclass){ //PUBLIC function to expand all headers based on their shared CSS classname
    		var $=jQuery
    		var $headers=$('.'+headerclass)
    		$('.'+this.contentclassname[headerclass]+':hidden').each(function(){
    			$headers.eq(parseInt($(this).attr('contentindex'))).click()
    		})
    	},
     
    	collapseall:function(headerclass){ //PUBLIC function to collapse all headers based on their shared CSS classname
    		var $=jQuery
    		var $headers=$('.'+headerclass)
    		$('.'+this.contentclassname[headerclass]+':visible').each(function(){
    			$headers.eq(parseInt($(this).attr('contentindex'))).click()
    		})
    	},
     
    	toggleone:function(headerclass, selected, optstate){ //PUBLIC function to expand/ collapse a particular header
    		var $=jQuery
    		var $targetHeader=$('.'+headerclass).eq(selected)
    		var $subcontent=$('.'+this.contentclassname[headerclass]).eq(selected)
    		if (typeof optstate=="undefined" || optstate=="expand" && $subcontent.is(":hidden") || optstate=="collapse" && $subcontent.is(":visible"))
    			$targetHeader.click()
    	},
     
    	expandit:function($targetHeader, $targetContent, config, isclicked){
    		$targetContent.slideDown(config.animatespeed, function(){config.onopenclose($targetHeader.get(0), parseInt($targetHeader.attr('headerindex')), $targetContent.css('display'), isclicked)})
    		this.transformHeader($targetHeader, config, "expand")
    	},
     
    	collapseit:function($targetHeader, $targetContent, config, isclicked){
    		$targetContent.slideUp(config.animatespeed, function(){config.onopenclose($targetHeader.get(0), parseInt($targetHeader.attr('headerindex')), $targetContent.css('display'), isclicked)})
    		this.transformHeader($targetHeader, config, "collapse")
    	},
     
    	transformHeader:function($targetHeader, config, state){
    		$targetHeader.addClass((state=="expand")? config.cssclass.expand : config.cssclass.collapse) //alternate btw "expand" and "collapse" CSS classes
    		.removeClass((state=="expand")? config.cssclass.collapse : config.cssclass.expand)
    		if (config.htmlsetting.location=='src'){ //Change header image (assuming header is an image)?
    			$targetHeader=($targetHeader.is("img"))? $targetHeader : $targetHeader.find('img').eq(0) //Set target to either header itself, or first image within header
    			$targetHeader.attr('src', (state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse) //change header image
    		}
    		else if (config.htmlsetting.location=="prefix") //if change "prefix" HTML, locate dynamically added ".accordprefix" span tag and change it
    			$targetHeader.find('.accordprefix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
    		else if (config.htmlsetting.location=="suffix")
    			$targetHeader.find('.accordsuffix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
    	},
     
    	urlparamselect:function(headerclass){
    		var result=window.location.search.match(new RegExp(headerclass+"=((\\d+)(,(\\d+))*)", "i")) //check for "?headerclass=2,3,4" in URL
    		if (result!=null)
    			result=RegExp.$1.split(',')
    		return result //returns null, [index], or [index1,index2,etc], where index are the desired selected header indices
    	},
     
    	getCookie:function(Name){ 
    		var re=new RegExp(Name+"=[^;]+", "i") //construct RE to search for target name/value pair
    		if (document.cookie.match(re)) //if cookie found
    			return document.cookie.match(re)[0].split("=")[1] //return its value
    		return null
    	},
     
    	setCookie:function(name, value){
    		document.cookie = name + "=" + value
    	},
     
    	init:function(config){
    	document.write('<style type="text/css">\n')
    	document.write('.'+config.contentclass+'{display: none}\n') //generate CSS to hide contents
    	document.write('<\/style>')
    	jQuery(document).ready(function($){
    		ddaccordion.urlparamselect(config.headerclass)
    		var persistedheaders=ddaccordion.getCookie(config.headerclass)
    		ddaccordion.contentclassname[config.headerclass]=config.contentclass //remember contentclass name based on headerclass
    		config.cssclass={collapse: config.toggleclass[0], expand: config.toggleclass[1]} //store expand and contract CSS classes as object properties
    		config.htmlsetting={location: config.togglehtml[0], collapse: config.togglehtml[1], expand: config.togglehtml[2]} //store HTML settings as object properties
    		config.oninit=(typeof config.oninit=="undefined")? function(){} : config.oninit //attach custom "oninit" event handler
    		config.onopenclose=(typeof config.onopenclose=="undefined")? function(){} : config.onopenclose //attach custom "onopenclose" event handler
    		var lastexpanded={} //object to hold reference to last expanded header and content (jquery objects)
    		var expandedindices=ddaccordion.urlparamselect(config.headerclass) || ((config.persiststate && persistedheaders!=null)? persistedheaders : config.defaultexpanded)
    		if (typeof expandedindices=='string') //test for valid cookie ('string'), invalid being null or 1st page load
    			expandedindices=expandedindices.replace(/c/ig, '').split(',') //if valid, change to array value
    		var $subcontents=$('.'+config["contentclass"])
    		if (!(expandedindices instanceof Array)) //check for invalid expandedindices value
    			expandedindices=[]
    		if (config["collapseprev"] && expandedindices.length>1)
    			expandedindices=[expandedindices.pop()] //return last array element as an array (for sake of jQuery.inArray())
    		$('.'+config["headerclass"]).each(function(index){ //loop through all headers
    			if (/(prefix)|(suffix)/i.test(config.htmlsetting.location) && $(this).html()!=""){ //add a SPAN element to header depending on user setting and if header is a container tag
    				$('<span class="accordprefix"></span>').prependTo(this)
    				$('<span class="accordsuffix"></span>').appendTo(this)
    			}
    			$(this).attr('headerindex', index+'h') //store position of this header relative to its peers
    			$subcontents.eq(index).attr('contentindex', index+'c') //store position of this content relative to its peers
    			var $subcontent=$subcontents.eq(index)
    			if (jQuery.inArray(index, expandedindices)!=-1){ //check for headers that should be expanded automatically
    				if (config.animatedefault==false)
    					$subcontent.show()
    				ddaccordion.expandit($(this), $subcontent, config, false) //Last Boolean value sets 'isclicked' parameter
    				lastexpanded={$header:$(this), $content:$subcontent}
    			}  //end check
    			else{
    				$subcontent.hide()
    				config.onopenclose($(this).get(0), parseInt($(this).attr('headerindex')), $subcontent.css('display'), false) //Last Boolean value sets 'isclicked' parameter
    				ddaccordion.transformHeader($(this), config, "collapse")
    			}
    		})
    		$('.'+config["headerclass"]).click(function(){ //assign behavior when headers are clicked on
    				var $subcontent=$subcontents.eq(parseInt($(this).attr('headerindex'))) //get subcontent that should be expanded/collapsed
    				if ($subcontent.css('display')=="none"){
    					ddaccordion.expandit($(this), $subcontent, config, true) //Last Boolean value sets 'isclicked' parameter
    					if (config["collapseprev"] && lastexpanded.$header && $(this).get(0)!=lastexpanded.$header.get(0)){ //collapse previous content?
    						ddaccordion.collapseit(lastexpanded.$header, lastexpanded.$content, config, true) //Last Boolean value sets 'isclicked' parameter
    					}
    					lastexpanded={$header:$(this), $content:$subcontent}
    				}
    				else{
    					ddaccordion.collapseit($(this), $subcontent, config, true) //Last Boolean value sets 'isclicked' parameter
    				}
    				return false
     	})
    		config.oninit($('.'+config["headerclass"]).get(), expandedindices)
    		$(window).bind('unload', function(){ //clean up and persist on page unload
    			$('.'+config["headerclass"]).unbind('click')
    			var expandedindices=[]
    			$('.'+config["contentclass"]+":visible").each(function(index){ //get indices of expanded headers
    				expandedindices.push($(this).attr('contentindex'))
    			})
    			if (config.persiststate==true){ //persist state?
    				expandedindices=(expandedindices.length==0)? '-1c' : expandedindices //No contents expanded, indicate that with dummy '-1c' value?
    				ddaccordion.setCookie(config.headerclass, expandedindices)
    			}
    		})
    	})
    	}
    }
    Puis la configuration ici :

    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
     
    ddaccordion.init({ //top level headers initialization
    	headerclass: "expandable", //Shared CSS class name of headers group that are expandable
    	contentclass: "categoryitems", //Shared CSS class name of contents group
    	collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
    	defaultexpanded: [0], //index of content(s) open by default [index1, index2, etc]. [] denotes no content
    	animatedefault: false, //Should contents open by default be animated into view?
    	persiststate: true, //persist state of opened contents within browser session?
    	toggleclass: ["", "openheader"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
    	togglehtml: ["prefix", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
    	animatespeed: "normal", //speed of animation: "fast", "normal", or "slow"
    	oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
    		//do nothing
    	},
    	onopenclose:function(header, index, state, isclicked){ //custom code to run whenever a header is opened or closed
    		//do nothing
    	}
    })
    J'aimerai pouvoir, dans le css, changer d'image quand le div est expended ou non....

    Quelqu'un pourrait m'aider?

    Merci beaucoup

    Brkahh

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    il doit y avoir un css associé à l'etat expanded ...

    suffit de le modifier ...
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Mon code ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h3 class="menuheader expandable" style="font-size:105%;font:optima;color:#777777;background:transparent url(/monsite/templates/rt_hivemind/images/light/h3-bg.png) repeat-y scroll left center;">Actualité</h3>
    <ul class="categoryitems">
    {mosloadposition artlast}
    </ul>
    J'utilise Joomla et le CSS pour le module est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    .module-style10 h3{
    	margin: 0 -12px 10px;
    	padding: 7px 15px;
    	border: 0px solid #dfe1e1;
    	margin: 0 -12px 10px;
    	padding: 7px 15px;
    	border: 0px solid #dfe1e1;
    	font-family: Optima, Lucida, 'MgOpen Cosmetica', 'Lucida Sans Unicode', sans-serif;
    	font-size: 101%;
    	line-height: 115%;
    	font-weight: normal;
    	}
    Je ne vois pas comment je peux proccéder...

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    par image tu entends image de fond ?
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Exacte.

    Enfaite, j'aimerai par exemple mettre un flèche qui pointe à droite quand le module est expended et mettre une flèche qui point vers le bas quand il ne l'est pas...

    Pour l'instant ca ressemble à ceci (pièce jointe)
    Images attachées Images attachées  

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Quelqu'un aurrait une idée???

    Merci beaucoup

    Brkahh

  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
    Citation Envoyé par SpaceFrog Voir le message
    il doit y avoir un css associé à l'etat expanded ...

    suffit de le modifier ...
    En lisant ça, tu aurais pu trouver ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toggleclass: ["", "openheader"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
    Qui précise, comme le disait SpaceFrog que quand ta div est expanded, on lui affecte la classe "openheader".
    Il doit y avoir un fichier CSS fourni avec le js dans lequel il faut retrouver cette classe et la modifier à ta convenance...
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    D'accord j'ai test un peu et ca marche merci de m'avoir ouvert les yeux

  9. #9
    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
    Le tag [RESOLU] est le meilleur des remerciements...
    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

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/04/2014, 16h54
  2. Supprimer l'affichage du nom de l'image quand le curseur est sur le logo cliquable
    Par guillaume7684 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 01/04/2012, 18h30
  3. [AC-2003] Empêcher d'ouvrir une autre application quand la mienne est lancée
    Par flet le kid dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/07/2009, 14h04
  4. changer l'image d'un div lorsque hover sur un autre ?
    Par pcouas dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2008, 10h25
  5. Affichage d'une image avec changement quand le pointeur est dessus
    Par mauriiice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2006, 20h21

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