2010-11-10 85 views
0

元素我有这样的javascript代码:这与jQuery问题

// 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。怎么了?

+2

这将有助于看到我认为标记。 – annakata 2010-11-10 15:28:31

+0

请修正[grammatical]你的问题,这是不可理解的。可能是一个在线的例子更多地解释你的问题.. – 2010-11-10 15:29:49

+0

是的,HTML源是绝对需要的。也许你甚至可以通过修剪你的jQuery选择器来简化你的问题,删除这些多级选择器。 – Kissaki 2010-11-10 15:37:48

回答

1

你应该真的做的是建立了所有单选按钮一个委托的事件处理程序,然后找到单选按钮类相应的“礼”。

$("#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有问题,因为“改变”不火,直到。控制失去了重点。)

(更多编辑 - 我今天需要更多的咖啡我认为:-)