Pergunta

semana

DKK

"Id =" value = "Radio2" 75" />

Eu tenho grupo destes entrada div gerado pelo loop while assim que eu quero conseguir isso: quando a entrada dentro entrada é clicado imagem de entrada div a mudança de fundo que eu quero, mas se eu escolher outro rádio em outra div entrada .. I 'd como todas as alterações anteriores (como a mudança anterior de fundo) para ir embora e mudar o fundo da div atual .. aqui é o que eu tentei fazer talvez você possa ajudar .. aqui é jquery abaixo

$("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)");

             });

Algo não está funcionando corretamente .. Eu inst código média' trabalhar em todos .. alguém pode me ajudar? obrigado


Eu tentei tanto este:

$("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)");
                     }
                 });
             });

por alguma razão não o seu trabalho em tudo, não alterar o fundo, talvez ele tenha que fazer alguma coisa com o código acima aqui é o 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>
Foi útil?

Solução

O primeiro problema imediato que vejo é que o jQuery está faltando um }); no final a menos que você só esqueceu de colá-lo lá. Que o impediria de fazer outra coisa senão lançar um erro ...

Esta é uma versão simplificada do que você já tentou antes. Poderia pelo menos fazer debuging um pouco mais fácil.

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

Embora, eu não vejo nada de errado, obviamente, sobre o que você tentou antes que me faz pensar se $("input") está combinando o que você pensa que é. Eu provavelmente pelo menos alerta algumas coisas dentro de sua função de clique para verificação de sanidade. Eu realmente encontrei algumas vezes que meu $(document).ready estava atirando antes de eu pensei que era ou seja, antes de meus entradas estavam prontos por causa da minha estrutura ...

Outras dicas

Há vários problemas:

  • Você está usando Alternar e função de alternância é:

Se eles são mostrados, alternar os torna oculto (utilizando o método ocultar). E se eles estão escondidos, alternar os torna mostrado (usando o método mostra).

Você deve perguntar se o rádio está marcada

  • Você deve chamar a cada função, a fim de alterar os outros valores rádio div

  • Você deve chamar a função $(document).ready()

Amostra ( Aviso: Javascript não é a minha melhor arma ):

<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:. Eu usei backgound-cor para melhorar a testes, mas seu uso do fundo é boa

Você pode precisar usar 'background-image' em vez de apenas 'fundo' para definir as imagens.

edit: pensei que tinha tido problemas com o 'background' propriedades css em jQuery antes, mas tendo apenas testado em vários navegadores parece que eu era ou enganado ou foi fixado em versões jQuery desde que eu trabalhei com ele <. / p>

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top