这个元素有jquery问题

时间:2010-11-10 15:27:08

标签: javascript jquery this

我有这个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 个答案:

答案 0 :(得分:1)

你应该真正做的是为所有单选按钮设置一个委托事件处理程序,然后从单选按钮类中找到相应的“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>元素具有更复杂的“类”值,那么你必须以其他方式剔除颜色。

编辑我修了一下 - 代码在“点击”时触发,然后重新发现当前检查的单选按钮。单选按钮在IE中可能有问题因为“更改”没有直到对照失去焦点为止。)

(更多编辑 - 我想今天我需要更多咖啡: - )