Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    32

    script jQuery - comportamento strano

    Ciao a tutti,

    sto sbattendo la testa da un paio d'ore (sono un neofita) su questo script che ho scritto; dovrebbe visualizzarmi un div specifico al click di un immagine


    **Galleria immagini
    Codice PHP:
    <ul class="blocks">
            [*][
    url="#"][img]gallery/1.jpg[/img][/url]
            [*][
    url="#"][img]gallery/2.jpg[/img][/url]
            [*][
    url="#"][img]gallery/3.jpg[/img][/url]
            [*][
    url="#"][img]gallery/4.jpg[/img][/url][/list] 
    **Contenuto da aprire in base a "title" cliccato
    Codice PHP:
    <div id="works" >
    <
    div class="hide" title="a">         
                
    </
    div>
    <
    div class="hide" title="b">         
            
    </
    div
    </
    div

    ** Script (non fucilatemi!)
    Codice PHP:
    this.Preview = function() {

        $(
    "ul.blocks li a ").click(
        function() {
                    
            var 
    divTitle = $("img"this).attr("title");
            
    alert(divTitle);
                            
            
    /*classe "on" elemento cliccato */
            
    var has_on=$("#works div[title="+divTitle+"]").hasClass("on");
            
    /*classe "on" di tutti gli elementi meno l'elemento cliccato*/
            
    var has_on_total=$("(#works div):not(#works div[title="+divTitle+"])").hasClass("on");
            
            
    alert(has_on);
            
    alert(has_on_total);
            
            
    /*se elemento diverso da elemento cliccato ha classe "on"*, tolgo classe "on" */
            /*e nascondo questo/i elemento/i */
            
    if (has_on_total) {
                
    alert("sono nell'if - HAS_ON_TOTAL=true");
                $(
    "(#works div):not(#works div[title="+divTitle+"])").removeClass("on");
                $(
    "#works div:not(#works div[title="+divTitle+"])").hide("fast");
            }
                            
            
    /*se l'immagine selezionata non ha la classe "on"  --> visualizzo contenuto   */  
            
    if (!has_on) {
                
    alert("sono nel II if- HAS_ON=false");
                $(
    "#works div[title="+divTitle+"]").addClass("on");
                $(
    "#works div[title="+divTitle+"]").show("slow");
            }
            else {
                $(
    "#works div[title="+divTitle+"]").removeClass("on");
                $(
    "#works div[title="+divTitle+"]").hide("slow");
            }
        });        
    };

    $(
    document).ready(function() {
        
    Preview();
    }); 
    Il comportamento risulta errato se tento di riaprire un contenuto (div) già aperto in precedenza.
    Esempio:
    1)apro contenuto con title="a" (OK)
    2)apro contenuto con title="b" (OK e il contenuto "a" viene nascosto correttamente)
    3)apro contenuto con title="a" (viene nascosto il contenuto "b" ma non viene aperto "a" pur eseguendo lo script correttamente)

    Da firebug il funzionamento sembra perfetto, non riesco a capire perchè al punto 3) non viene visualizzato il contenuto.

    Avete qualche idea?

    Grazie !!

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    32
    La cena porta consiglio...

    sono riuscito a sistemare lo script, anche se non troppo elegantemente.

    Il problema (che mi era sfuggito da firebug) riguardava sostanzialmente l'errata assegnazione di "display:none e display:block" ai figli dei div con classe "hide" e attributo "title".

    Potete chiudere!

    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.