Вопрос

неделя

DKK

" идентификатор="radio2" значение="75" />

У меня есть куча таких записей div, сгенерированных циклом while, поэтому я хочу добиться этого :ПРИ нажатии на ввод внутри элемента ввода я хочу, чтобы фоновое изображение элемента ввода изменилось, но если я выберу другое радио в другом элементе ввода..Я бы хотел, чтобы все предыдущие изменения (например, предыдущее изменение фона) исчезли и изменили фон текущего div ..вот что я пытался сделать , может быть , вы сможете помочь ..вот jquery ниже

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

             });

Что - то работает со сбоями ..Я имею в виду , что код вообще не работает ..кто - нибудь может мне помочь ?Спасибо


Я пробовал и то, и другое :

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

И

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

по какой-то причине он вообще не работает, не изменяя фон, возможно, это должно что-то сделать с приведенным выше кодом, вот полный сценарий :

 <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>
Это было полезно?

Решение

Первая непосредственная проблема, которую я вижу, заключается в том, что в вашем jQuery отсутствует }); в конце, если только вы просто не забыли вставить его туда.Это помешало бы ему делать что-либо, кроме выдачи ошибки...

Это упрощенная версия того, что вы пробовали раньше.Это могло бы, по крайней мере, немного упростить отладку.

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

Хотя я не вижу ничего явно неправильного в том, что вы пробовали раньше, что заставляет меня задаться вопросом, если $("input") соответствует тому, что вы думаете, что это такое.Я бы, вероятно, по крайней мере, предупредил некоторые вещи внутри вашей функции click для проверки работоспособности.На самом деле я несколько раз обнаруживал, что мой $(document).ready стрелял раньше, чем я думал , что это было , т. е.до того, как мои входные данные были готовы из-за моего фреймворка...

Другие советы

Есть несколько проблем:

Если они отображаются, переключатель делает их скрытыми (с использованием метода hide).Если они скрыты, переключение делает их отображаемыми (с использованием метода show).

Вы должны спросить, проверено ли радио

  • Вы должны вызвать функцию each, чтобы изменить другие значения radio div

  • Вам следует позвонить в $(document).ready() функция

Образец (Предупреждение:Javascript - не мое лучшее оружие):

<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>

Примечание:Я использовал backgound-color для лучшего тестирования, но вы хорошо используете background.

возможно, вам придется использовать "background-image" вместо просто "background" для установки изображений.

Редактировать:думал, что у меня раньше были проблемы с css-свойством 'background' в jQuery, но, только что протестировав его в различных браузерах, кажется, я либо ошибся, либо это было исправлено в версиях jQuery, поскольку я работал с ним.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top