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

    Prevenire chiusura spoiler dal suo contenuto

    Il problema risiede in questa pagina:

    http://chilp.it/23911c

    Appena clicco il contenuto presente all'interno dello spoiler, lo spoiler si chiude.
    Appena seleziono del testo all'interno dello spoiler esso si chiude.
    Ecco, io vorrei evitare questa condizione.

    L'effetto che voglio ottenere è semplice:
    cliccare sul titolo per aprire lo spoiler e dover ricliccare unicamente il titolo per chiudere lo spoiler.


    Ho provato anche modificare il codice javascript che sta dietro a questo tipo di spoiler ma senza successo.

    All'interno dello spoiler è presente anche uno script che gestisce l'impaginazione delle righe. La cosa strana è che cliccando sulle schede(i numeri) per navigare le pagina lo spoiler NON si chiude.

    In pratica, questo elemento nidificato all'interno dello spoiler è come immune, isolato da .OS.
    Anche inserendo un iframe e cliccandoci sopra lo spoiler non si chiude, ma io non voglio usare altri elementi nidificati.

    Ho provato anche a domandare qui:
    http://stackoverflow.com/questions/1...spoilers-style

    Ma non mi è stato d'aiuto perchè .OS contiente titolo e contenuto e sembra che nel mio caso occorra qualcosa d'altro. Mi è stato suggerito di provare ad inserire [B]stopPropagation()[B] a [B].details[B] click event ma non sono riuscito a capire come e dove inserire correttamente questo frammento di codice per evitare la stessa condizione di chiusura. Ci hio provato, ma senza successo.

    Vi allego il file in versione locale perchè è l'unico metodo per modificare e testare il codice. Infatti ha alcuni elementi server side che non possono essere scaricati:

    http://chilp.it/2a65f6

    Spero che mi possiate aiutare perchè proprio non ne vengo fuori. Non sono esperto di funzioni di javascript, quindi se potete postatemi il codice completo cosi posso solo copiarlo o allegatemi Artbook2.html col suo codice da voi modificato.

    Cmq il codice javascript che dovrebbe gestire è questo:

    Spoiler

    Vi consiglio cmq di guardare il sorgente

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non e' la soluzione migliore ma potresti anche fare cosi'
    codice:
     $('.OS').click(function(e){
               if(!$(e.target).parents('.details').length){
                            if($(".details").is(":visible"))
                            {
                                $(".details").not(":hidden").hide("slow");
                                return true;
                            }
                            else
                            {
                                $(".OS").not(this).each(function(i) {
                                    $(".details").hide("slow");
                                });
                                $(".details").show("slow");
                                return false;
                            }
              }
    });
    non ho provato ma dovrebbe funzionare: applica l' effetto solo se l' elemento da cui parte l' evento non e' discendente di "details"

    ciao

  3. #3
    Allora..l'ho leggermente modificato a causa della chiusura-apertura-apertura..si apriva 2 volte non so perchè, jo tolto una parte del tuo codice dopo else

    codice:
      $('.OS').click(function(e){                                                                                           if(!$(e.target).parents('.details').length){                                                                                            if($(".details").is(":visible"))                         
                      {                            
                      $(".details").not(":hidden").hide("slow");                            
                      return true;                         
                      }                         
                      else                         
                      {                                                          
                      $(".details").show("slow");                             
                      return false;                         
                      }           
             } 
    });
    Il problema è che anche così mi si aprono entrambi gli spoiler!! Come posso rimediare?
    La cosa buona è che cliccato dentro lo spoiler non si chiude.

    Guarda qui:
    http://chilp.it/aa1d9b

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da elixir1349
    Allora..l'ho leggermente modificato a causa della chiusura-apertura-apertura..si apriva 2 volte non so perchè, jo tolto una parte del tuo codice dopo else

    codice:
      $('.OS').click(function(e){                                                                                           if(!$(e.target).parents('.details').length){                                                                                            if($(".details").is(":visible"))                         
                      {                            
                      $(".details").not(":hidden").hide("slow");                            
                      return true;                         
                      }                         
                      else                         
                      {                                                          
                      $(".details").show("slow");                             
                      return false;                         
                      }           
             } 
    });
    Il problema è che anche così mi si aprono entrambi gli spoiler!! Come posso rimediare?
    La cosa buona è che cliccato dentro lo spoiler non si chiude.

    Guarda qui:
    http://chilp.it/aa1d9b
    Ho fatto alcuni test prova cosi e dovrebbe andare
    codice:
     $(document).ready(function(){
     $(".nonjs").removeAttr( "href"); 
    //href is needed for users without JS
    
     $('.OS').click(function(e){
               if(!$(e.target).parents('.details').length){
                            if($(this).find('.details').is(":visible"))
                            {
                                $(this).find('.details').not(":hidden").hide("slow");
                                return true;
                            }
                            else
                            {
                                
                                $(this).find('.details').show("slow");
                                return false;
                            }
              }
    });
     });

  5. #5
    funziona perfettamente, grazie mille!

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.