Javascript funzione "onclick"

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
batello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 589
Iscrizione: lunedì 2 giugno 2008, 11:30

Javascript funzione "onclick"

Messaggio da batello »

Salve, ho una necessità nel fare un sito web.
In questa pagina ci sono tre box con un testo e sotto un link " + scopri di più". Al click di questo link, si apre una tendina con delle info e il " + " diventa " - ". Quando poi clicco nuovamente sul link la tendina si chiude e il "-" torna a essere "+".
Per fare questa cosa ho semplicemente creato una classe e, tramite CSS, ho inserito il "+" con un before. Tramite javascript ho scritto questa funzione che mi cambia il nome alla classe di partenza e, sempre tramite css, ho definito un before che mi metta il "-" anziché il "+".
La funzione javascript è questa:

Codice: Seleziona tutto

<script>
$(document).ready(function(){
    $("#mercatiDropdown a.link_contatti").on('click',function(){
        if($(this).hasClass("link_contatti")){
          $(this).removeClass("link_contatti").addClass("link_contattiAfterClick");
        }else{
           $(this).removeClass("link_contattiAfterClick").addClass("link_contatti");
        }
    });
});
</script>
Questa funzione va che è una meraviglia ma non prevede una cosa:
come dicevo i box con i link " + scopri di più" sono tre, uno accanto all'altro.
Se io mi trovo nel box A e clicco su " + scopri di più", si apre la tendina e il "+" si trasforma in "-". Se però invece di ricliccare sul link clicco su " + scopri di più" del box B. Si chiude la tendina di A, si apre quella di B e il suo "+" si trasforma in "-" però il "-" di A non torna a essere un "+".

Insomma, so di essermi spiegato uno schifo ma spero sia chiaro lo stesso.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Javascript funzione "onclick"

Messaggio da Zoff »

Ine ffetti non è chiaro.
Puoi postare il codice html incriminato?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
batello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 589
Iscrizione: lunedì 2 giugno 2008, 11:30

Re: Javascript funzione "onclick"

Messaggio da batello »

Questo è l'html

Codice: Seleziona tutto

	<div class="col-xs-4 dropdown yamm-fw">
		<h2>FINANZIAMENTI</h2>
		<hr />
		<!--<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>-->
		<a id="dettagliContatti" href="#" class="link_contatti" data-toggle="dropdown">I nostri contatti</a>
		<div class="dropdown-menu" >
			<div class="col-xs-12">
				<p class="paragraphL text-center">
				Alcune info
				</p>
			</div>
		</div>
	</div>
	
	<div class="col-xs-4 dropdown yamm-fw">
    <h2>LEASING</h2>
		<hr />
		<!--<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>-->
		<a href="#" class="link_contatti" data-toggle="dropdown">I nostri contatti</a>
		<div class="dropdown-menu" >
			<div class="col-xs-12">
				<p class="paragraphL text-center">
				Alcune info
				</p>
			</div>
		</div>
	</div>

	<div class="col-xs-4 dropdown yamm-fw">
	<h2>FACTORING</h2>
		<hr />
		<!--<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>-->
		<a href="#" class="link_contatti" data-toggle="dropdown">I nostri contatti</a>
		<div class="dropdown-menu" >
			<div class="col-xs-12">
				<p class="paragraphL text-center">
				Alcune info
				</p>
			</div>
		</div>
	</div>
Questo è il link con il "+" davanti

Codice: Seleziona tutto

<a href="#" class="link_contatti" data-toggle="dropdown">I nostri contatti</a>
.
Il + viene creato attraverso questo css

Codice: Seleziona tutto

#mercatiDropdown a.link_contatti:before{
	content:"+";
	display:inline-block;
	background:#000;
	color:#fff;
	border-radius:10px;
	width:20px;
	height:20px;
	text-align:center;
	margin-right:10px;
}
e il javascript è quello di sopra
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Javascript funzione "onclick"

Messaggio da Zoff »

Quindi il "box A" dell'esempio sarebbe FINANZIAMENTI e il "box B" LEASING?

Non mi è chiaro cosa sia " + scopri di più"
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: Javascript funzione "onclick"

Messaggio da SuperStep »

dovresti salvarti in una variabile il "+ attivo", quando premi un elemento diverso da "+ attivo" quell'elemento torna ad essere come in oartenza.

(oppure semplicemente con brute force metti tutti gli elementi chiusi e poi rimetti quello premuto attivo).
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Avatar utente
eaghezzi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 725
Iscrizione: martedì 21 luglio 2009, 10:27
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.1 LTS i686
Sesso: Maschile
Località: Valleambrosia

Re: Javascript funzione "onclick"

Messaggio da eaghezzi »

il problema è che il css viene applicato a tutti gli elementi
o fai una classe per ogni singolo elemento ed applichi quella al solo elemento $(this)...

o più elegantemente fai tutto via script
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: Javascript funzione "onclick"

Messaggio da SuperStep »

comunque dovrebbe essere piu' una cosa del genere:

Codice: Seleziona tutto

 $("#mercatiDropdown a.link_contatti").on('click',function(event){
        if($(this).hasClass("link_contatti")){
          $(event.target).removeClass("link_contatti").addClass("link_contattiAfterClick");
        }else{
           $(this).removeClass("link_contattiAfterClick").addClass("link_contatti");
        }
    });
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
batello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 589
Iscrizione: lunedì 2 giugno 2008, 11:30

Re: Javascript funzione "onclick"

Messaggio da batello »

SuperStep [url=http://forum.ubuntu-it.org/viewtopic.php?p=4766515#p4766515][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:comunque dovrebbe essere piu' una cosa del genere:

Codice: Seleziona tutto

 $("#mercatiDropdown a.link_contatti").on('click',function(event){
        if($(this).hasClass("link_contatti")){
          $(event.target).removeClass("link_contatti").addClass("link_contattiAfterClick");
        }else{
           $(this).removeClass("link_contattiAfterClick").addClass("link_contatti");
        }
    });
Ho provato a sostituire il mio codice con questo ma purtroppo non funziona. Si comporta esattamente come il mio
batello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 589
Iscrizione: lunedì 2 giugno 2008, 11:30

Re: Javascript funzione "onclick"

Messaggio da batello »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4765528#p4765528][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Quindi il "box A" dell'esempio sarebbe FINANZIAMENTI e il "box B" LEASING?

Non mi è chiaro cosa sia " + scopri di più"
Il "+ scopri di più" sarebbe "+ I nostri contatti"... avevo sbagliato a scrivere nel primo post
batello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 589
Iscrizione: lunedì 2 giugno 2008, 11:30

Re: Javascript funzione "onclick"

Messaggio da batello »

eaghezzi [url=http://forum.ubuntu-it.org/viewtopic.php?p=4766493#p4766493][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:il problema è che il css viene applicato a tutti gli elementi
o fai una classe per ogni singolo elemento ed applichi quella al solo elemento $(this)...

o più elegantemente fai tutto via script
Purtroppo non posso fare una classe per ogni singolo elemento perché il codice HTML che vi ho postato prima è una "versione semplificata" che però andremo a rendere più complessa in quanto i contenuti potranno cambiare quindi verrà creato un foreach che varia in base a quello che verrà inserito dal cliente.

Per quanto riguarda il "...o più elegantemente fai tutto via script" è quello che vorrei fare ma non so bene come. Non sono molto esperto di javascript; lo sto imparando in questi giorni per il lavoro
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Javascript funzione "onclick"

Messaggio da Zoff »

In realtà è il comportamento predefinito di bootstrap, basta togliere data-toggle="dropdown" e aggiungere il toggle al click:

Codice: Seleziona tutto

$(document).ready(function(){
	$("#mercatiDropdown a.link_contatti").on('click',function(){
		$(this).dropdown('toggle');
		if($(this).hasClass("link_contatti")){
		  $(this).removeClass("link_contatti").addClass("link_contattiAfterClick");
		}else{
		   $(this).removeClass("link_contattiAfterClick").addClass("link_contatti");
		}
	});
});
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti