этот элемент с проблемой JQuery - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть этот код JavaScript:

// Meldingen groen / oranje / rood
$("#blokken .overzicht ul.melding li").hide();

$("#blokken .overzicht .matrix td.radio.groen :radio").change(function(){
 $("#blokken .overzicht ul.melding li").hide();

 $(this).parents("#blokken .overzicht ul.melding li.groen").fadeIn(600);
});

$("#blokken .overzicht .matrix td.radio.oranje").click(function(){
 $("#blokken .overzicht ul.melding li").hide();
 $("#blokken .overzicht ul.melding li.oranje").fadeIn(600);

});

$("#blokken .overzicht .matrix td.radio.rood").click(function(){
 $("#blokken .overzicht ul.melding li").hide();
 $("#blokken .overzicht ul.melding li.rood").fadeIn(600);

});                

В моем документе HTML есть несколько переключателей. Когда пользователь нажимает радиокнопку, я хочу показать конкретную <li>, т.е. если пользователь нажимает радиокнопку .groen, тогда будет отображаться li.groen и т. Д. Но когда я нажимаю радиокнопку прямо сейчас показаны все элементы <li> в ul.melding. В чем дело?

1 Ответ

1 голос
/ 10 ноября 2010

Что вы должны действительно сделать, это настроить один делегированный обработчик событий для всех переключателей, а затем найти соответствующий "li" из класса переключателей.

$("#blokken").delegate('.overzicht .matrix td.radio input:radio', 'click', function() {
  $('#blokken .overzicht ul.melding li').hide();

  var checked = $('#blokken .overzicht .matrix td.radio input:radio:checked'),
    $td =  checked.parent('td.radio');
  $('#blokken .overzicht ul.melding li.' + $td.attr('class')).fadeIn(600);
});

Теперь, если элементы <td> имеют более сложные значения "класса", то вам придется выдернуть цвет другим способом.

( edit Я немного исправил это - код срабатывает при «щелчке», а затем повторно обнаруживает текущую отмеченную радиокнопку. Радиокнопки могут быть проблематичными в IE, потому что «изменение» не срабатывает, пока элемент управления не потеряет фокус.)*

(больше правок - сегодня мне нужно больше кофе, я думаю: -)

...