我有这个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
元素。怎么了?
答案 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中可能有问题因为“更改”没有直到对照失去焦点为止。)
(更多编辑 - 我想今天我需要更多咖啡: - )