Проблема события щелчка переключателя jquery - PullRequest
1 голос
/ 12 мая 2010

У меня есть следующий код в jQuery для набора переключателей, которые имеют одинаковое поведение при нажатии (они показывают некоторые скрытые поля). Ранее я дублировал один и тот же код для каждого отдельного селектора, поэтому я просто использовал несколько селекторов, как в коде ниже. Тем не менее, это на самом деле не работает, так как, когда несколько переключателей находятся на одной странице, правильное поведение «показать / скрыть», похоже, испорчено. Это потому, что я использую $ (this) с live ()? Или я что-то не так делаю? Спасибо за любую помощь, просто стараясь сохранить этот код настолько чистым, насколько это возможно, хочу избежать дублирования его для каждого селектора!

//event handler for radio fields with subsections
        $("input[name='registered'], input[name='voted'], input[name='report'], input[name='newsletter']").live("click", function(){
            //check if value is true
            if ($(this + ":checked").val() == '1') 
                $(this).parent().find('span.hidden').fadeIn("slow");
            else 
                $(this).parent().find('span.hidden').hide();
        });

1 Ответ

1 голос
/ 12 мая 2010

Ваш селектор в вашем утверждении if неверен. Попробуйте:

if ($(this).filter(':checked').val() == '1')

или даже

if ($(this).val() == '1')

В том виде, в котором вы его получили, он бы преобразовал в строку элемент this и добавил бы его к «флажку». Очевидно, не то, что вы хотите. Вам нужно посмотреть, будет ли нажатие элемента - только один вызовет событие, поэтому this будет соответствовать выбранному элементу, таким образом, устраняя необходимость в фильтре, я полагаю, - правильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...