Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117

    Jquery Method .css() funziona parzialmente

    Ho il seguente codice:
    codice:
        $(".searchkey > input").change(function(){
            var spd = $(".structure").css("padding");
            var sfs = $(".structure").css("font-size");
            if(this.checked) {
                $(".structure:not(." + this.id + ")").css({"width":0, "height":0, "padding":0, "font-size":0});
            }
            else {
                $(".structure:not(." + this.id + ")").css({"width":"150px", "height":"100px", "padding":spd, "font-size":sfs});
            }
        });
    Funziona tutto alla perfezione a parte la variabile "sfs" all'interno dell'else.
    Il padding ed il font-size iniziali vengono immagazzinati in due variabili all'inizio del codice, poi se un checkbox viene flaggato e deflaggato le proprietà css cambiano e poi ritornano quelle di prima.
    Come potete vedere la sintassi, la struttura ed il metodo di utilizzo del padding e del font-size è lo stesso identico, eppure il padding funziona perfettamente mentre il font-size no.
    Dove sto sbagliando?
    Ecco il CSS relativo
    codice HTML:
    /* RICERCA */
    .searchkey {margin: 5px 20px; float: left; width: 110px; float: left;}
    .structure  {padding: 20px; background: rgba(0, 0, 0, 0.08); border-radius: 10px;  float: left; width: 150px; height: 100px; transition: all 0.2s,  background 0.1s; cursor: pointer; font-size: 16px;}
    .structure:hover {background: rgba(0, 0, 0, 0.06);}
    e l'HTML relativo
    Codice PHP:
    <form id="searchfilters">
    <div  class="searchkey"><input type="checkbox" id="vegan" name="vegan"  value="vegan"><label  for="vegan">Vegano</label></div>
    <div  class="searchkey"><input type="checkbox" id="vegetarian"  name="vegetarian" value="vegetarian"><label  for="vegetarian">Vegetariano</label></div>
    <div  class="searchkey"><input type="checkbox" id="glutenfree"  name="glutenfree" value="glutenfree"><label  for="glutenfree">Senza Glutine</label></div>
    <div  class="searchkey"><input type="checkbox" id="bio" name="bio"  value="bio"><label  for="bio">Biologico</label></div>
    </form><br>
    <? 
    $getstructures 
    mysql_query("SELECT * FROM strutture;");  
    while(
    $struc=mysql_fetch_array($getstructures))
        {
        
    $sid $struc["id"];
        
    $snome$struc["nome"];
        
    $sindirizzo $struc["indirizzo"];
        
    $slat $struc["latitudine"];
        
    $slng $struc["longitudine"];
        
    $sarea $struc["area"];
        
    $svegan $struc["vegan"];
        
    $svegetarian $struc["vegetarian"];
        
    $sglutenfree $struc["glutenfree"];
        
    $sbio $struc["bio"];
        
    $shandicap $struc["handicap"];
        
    $seat $struc["mangiare"];
        
    $ssleep $struc["dormire"];
        
    $sdo $struc["fare"];
        
    $stype $struc["tipo"];
        
    // $simg = $struc["immagini"];
        
    echo '<div onClick="location.href=\'http://www.maremmahost.it/struttura.php?id='$sid'\' " class="structure'
        if(
    $svegan){echo " vegan";}
        if(
    $svegetarian){echo " vegetarian";}
        if(
    $sbio){echo " bio";}
        if(
    $sglutenfree){echo " glutenfree";}
        echo
    '"><img src=""><br>'$sname'Prova</div>';
        }
        
    ?>
    Ultima modifica di fluxKami; 08-08-2017 a 14:52

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Non cambia. Controlla pure:
    http://www.maremmahost.it/customsearch.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Il problema è proprio il valore della variabile. Ho provato come mi hai suggerito ed il valore rimane 0. Non capisco perché. Per essere sicuro l'ho anche settato nel css.

    Con la dicitura che hai detto tu la cosa non cambia:
    codice HTML:
        $(".searchkey > input").change(function(){
            var spd = $(".structure").css("padding");
            var sfs = parseInt($(".structure").css("font-size"));
            if(this.checked) {
                $(".structure:not(." + this.id + ")").css({"width":0, "height":0, "padding":0, "font-size":0});
            }
            else {
                $(".structure:not(." + this.id + ")").css({"width":"150px", "height":"100px", "padding":spd, "font-size":sfs + 'px'});
                alert(sfs);
            }
        });

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Ho appurato che la variabile contiene il valore giusto, ovvero "16px".
    Poi quando flaggo il checkbox, se si attiiva l'IF, diventa zero e poi, quando tolgo il flag e quindi si attiva l'ELSE il risultato della variabile cambia.
    Strano che questo comportamento si verifichi solo con il font-size e non con il padding.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Ho "accomodato" in un modo in cui preferivo non fare: ho impostato un valore fisso alle variabili. Se mai vorrò modificare i valori dovrò ricordarmi di farlo sia da CSS che da JS, però pazienza.
    Grazie comunque.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Mi sembra che il tuo codice abbia parecchi errori concettuali.
    Tanto per cominciare hai gli id ripetuti fra le checkbox e le div di classe structure, e già da qui pretendere che javascript funzioni correttamente la vedo durissima.
    In secondo luogo è sbagliato l'approccio della tua funzione: ad ogni chiamata vai a ripetere la valorizzazione delle variabili spd ed sfs. Il problema è che molto presto quei valori (padding e font-size) saranno stati azzerati dalla chiamata precedente, e quindi è chiaro che non riuscirai più a ripristinare il valore iniziale. Ci sarebbe semmai da chiedersi come mai non ti succeda col padding.
    Trovo molto "curioso" anche il modo in cui cerchi di escludere dalla modifica al css le div che non hanno lo stesso id del checkbox selezionato: a parte il problema di id ripetuti già detto prima, mi sembra che tu vada a caccia di id usando il selettore per le classi...

    Per concludere: quando devi postare il codice html posta il codice html. Non il php che lo genera, che non ci fa capire quale sia la struttura effettiva della pagina

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.