Domanda

settimana          

DKK

    & Quot; id = " Radio2 " value = " 75 " / & Gt;     

Ho un sacco di queste voci div generate dal ciclo while, quindi voglio raggiungere questo obiettivo: QUANDO si fa clic sull'ingresso interno alla voce, voglio cambiare l'immagine di sfondo del div della voce, ma se scelgo un'altra radio in un'altra div. Vorrei che tutte le modifiche precedenti (come il precedente cambio di sfondo) andassero via e cambiassero lo sfondo dell'attuale div .. ecco cosa ho provato a fare forse puoi aiutarmi .. ecco jquery sotto

$("input").click(function() {

             $(this).parent("div").toggle(function() {
             $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
             }, function() {
             $(this).parent("div").css("background", "url(images/div_bg.png)");

             });

Qualcosa non funziona .. Intendo dire che il codice inst 'funziona affatto ... qualcuno può aiutarmi? grazie


Ho provato entrambi:

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });

E

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
                     }
                     else {
                         $(this).parent("div").css("background", "url(images/div_bg.png)");
                     }
                 });
             });

per qualche motivo non funziona affatto non cambia lo sfondo, forse deve fare qualcosa con il codice sopra qui è lo script completo:

 <script type="text/javascript">

         $(document).ready(function() {

             $(".left_navigation a:last").toggleClass('bolder');


             $("input").each(function() {
                 var element_value = $(this).val();
                 $(this).prev("p").append(" " + element_value + ",-");
             });


             $("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });




         });

</script>
È stato utile?

Soluzione

Il primo problema immediato che vedo è che al tuo jQuery manca un }); alla fine, a meno che tu non ti sia dimenticato di incollarlo lì. Ciò gli impedirebbe di fare qualsiasi cosa oltre a lanciare un errore ...

Questa è una versione semplificata di cui hai provato prima. Potrebbe almeno rendere il debug leggermente più semplice.

<script type="text/javascript">
$(document).ready(function(){
    $("input").click( function() { 
         $("input").parent("div").removeClass("highlight");
         $(this).parent("div").addClass("highlight");
      });
  });
</script>

Anche se, ovviamente, non vedo nulla di sbagliato in quello che hai provato prima, il che mi fa chiedere se $ (" input ") corrisponde a ciò che pensi che sia. Probabilmente avrei almeno avvisato alcune cose all'interno della tua funzione clic per il controllo della sanità mentale. In realtà ho scoperto alcune volte che il mio $ (documento) .ready è stato attivato prima che pensassi che fosse cioè prima che i miei input fossero pronti a causa del mio framework ...

Altri suggerimenti

Esistono diversi problemi:

  

Se sono mostrati, attiva / disattiva li rende   nascosto (usando il metodo hide). Se   sono nascosti, la commutazione li rende   mostrato (usando il metodo show).

Dovresti chiedere se la radio è selezionata

  • Dovresti chiamare ciascuna funzione, al fine di cambiare gli altri valori di div radio

  • Dovresti chiamare la funzione $ (document) .ready ()

Esempio ( Avvertenza: Javascript non è la mia arma migliore ):

<script>
$(document).ready(function(){
    $("input").click( function() { 
         $("input").each(function() { 
             if (this.checked) {
                $(this).parent("div").css("background-color", "green") }
             else {
                $(this).parent("div").css("background-color", "red")}
          });
      });
  });
</script>

Nota: ho usato backgound-color per test migliori, ma il tuo utilizzo dello sfondo è buono.

potrebbe essere necessario utilizzare 'immagine di sfondo' anziché semplicemente 'sfondo' per impostare le immagini.

modifica: pensavo di aver avuto problemi con la proprietà css 'background' in jQuery prima, ma dopo averlo appena testato su vari browser sembra che mi sbagliassi o che fosse stato corretto nelle versioni jQuery da quando ci avevo lavorato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top