2009-11-23 2 views
1

У меня возникли проблемы с использованием JQuery для работы с несколькими группами переключателей. Код JQuery по какой-то причине не может отличить две группы радиокнопки и не может определить, к какой группе переключателей я нажал.Проблема с JQuery и несколькими группами переключателей

Вот HTML код:

<!-- Radio button group 1 --> 
<input type="radio" name="group_1" value="full_day_ticket"/> 
<input type="radio" name="group_1" value="half_day_ticket"/> 

<!-- Radio button group 2 --> 
<label><input type="radio" name="group_2" value="boarder"/> Snowboard</label> 
<label><input type="radio" name="group_2" value="skier"/> Ski</label> 

И код JQuery выглядит следующим образом:

$("input:radio[@name='group_2']").click(function() { 
    alert('group 2 clicked'); 
} 

Теперь, когда я нажимаю на кнопки радио под названием «1 группе», JQuery думает, что я нажал на переключателе в группе «group_2» и отобразится окно предупреждения. По какой-то причине кажется, что JQuery не распознает фильтр @ name = 'group_2' и фиксирует клики по всем переключателям на странице, а не только радиокнопкам с именем «group_2».

Неужели кто-нибудь сталкивался с этой проблемой раньше? Или я делаю что-то глупое?

Спасибо!

ответ

3

Небольшое изменение будет исправить:

$("input:radio[name=group_2]").click(function() { 
    alert('group 2 clicked'); 
}); 
+0

Спасибо, но удаление одиночные кавычки не работают. Когда я нажимаю на переключатели group_1, появляется предупреждающее сообщение group_2. –

+0

Doh! Неважно. Я не заметил, что вы удалили @ из @name. Удаление @ устраняло проблему! Спасибо! –

+0

Спасибо Doug! У меня была такая же проблема. – dharm0us

8

Имейте в виду, что в JQuery 1.3 [@attr] селекторы типа были удалены.

Селектор будет работать должным образом, если вы удалите знак @.

Но вы могли бы на самом деле обрабатывать событие щелчка для обеих групп:

$("input:radio").click(function() { 
    if (this.name == "group_1") { 
    // group 1 clicked 
    } else if (this.name == "group_2") { 
    // group 2 clicked 
    } 
}); 
+0

+1 Для объяснения об устаревании. И отличный пример кода. :) –

+0

Спасибо dcneiner, селектора @attr были * устарели * на 1.2 и полностью удалены на 1.3 – CMS

+0

Спасибо CMS - Это была отличная помощь – Veeru

Смежные вопросы