Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Cambio testo di un link con due messaggi in successione

    Salve a tutti,
    sto impazzendo con jquery, vorrei semplicemente cambiare il testo di un link di uno shop ma non trovo il modo ... un messaggio non viene visualizzato (Prodotto Aggiunto) perchè jquery forza in tutti i modi con il display:none e anche mettendo lo style nella classe del link jquery prevale... C'è un modo per aggirare il problema'

    Ho questo script:

    <script>
    $(document).ready(function() {
    $('.shop').click(function(){
    $(this).next('.add-button .btn-bottom-linea a').text('Prodotto aggiunto').delay(3000).fadeOut(500);
    $(this).text('Aggiungi altro prodotto').hide().delay(3500).fadeIn(500);
    });
    });
    </script>

    e il seguente link:
    <a href="#0" class="shop add-button btn-bottom-line">Aggiungi Prodotto</a>

    Grazie in anticipo a chi avrà modo di darmi qualche dritta.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Ciao, una prima dritta è quella di usare il tag [ code ] quando posti del codice sul forum, in modo che questo sia formattato correttamente una volta pubblicato (nota il pulsantino col cancelletto [#] nell'editor messaggi). Grazie.

    Seconda cosa, non mi è chiaro il motivo dell'uso di quel .next() e tutto l'ambaradan che ci hai messo dentro come selettore. Non ho capito se devi cambiare il testo a due elementi diversi o se si tratta sempre di quell'elemento <a>; ma in tal caso mi pare ci sia qualche pasticcio.

    Ad ogni modo il metodo .hide() pare non venga incluso nella coda dell'animazione per cui non è gestito dal .delay(), come è indicato sulla documentazione di cui riporto lo stralcio:
    Only subsequent events in a queue are delayed; for example this will not delay the no-arguments forms of .show() or .hide() which do not use the effects queue.
    Fonte: https://api.jquery.com/delay/

    Potrebbe essere questo il problema?

    In qualunque caso, se si tratta di cambiare il testo in due o più passaggi, potresti utilizzare dei callback per il metodo fadeOut, così da eseguire i vari passaggi in modo sequenziale; cioè, terminato il primo fadeOut viene eseguito lo script che sta nel relativo callback, in cui magari viene eseguito il cambio del testo, impostato il delay e lanciato quindi un secondo fadeOut; quindi, terminato anche questo, viene eseguito lo script del suo eventuale callback, e così via.

    Una cosa del genere (sempre se non abbia interpretato male ciò che stai cercando di fare):
    codice:
    $('.shop').click(function(){
       $(this).fadeOut(500,function(){
          $(this).text('Prodotto aggiunto').fadeIn(500).delay(3000).fadeOut(500,function(){
             $(this).text('Aggiungi altro prodotto').fadeIn(500);
          });
       });
    });
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie per la prima dritta e per le utili ed interessanti spiegazioni.
    Il mio script in effetti era proprio un pasticcio, il tuo funziona benissimo, grazie mille per il tuo gentile supporto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.