这个问题主要是在标题中总结出来的。如果display:none,Internet Explorer将不会触发点击功能;
该网站位于:http://tinyurl.com/3abbcsr
我使用的是自定义的无线电/复选框代码accessible_custom_designed_checkbox_radio_button_inputs_styled_css_jquery/
这是其代码的JIST(我修改了它允许定义不同的风格不同标签上的标题)
$(this).each(function(i){
if($(this).is('[type=radio]')){
var input = $(this);
// get the associated label using the input's id
var label = $('label[for='+input.attr('id')+']');
var labelTitle = label.attr('title');
// wrap the input + label in a div that has class "custom-radio-LabelTitle"
$('<div class="custom-radio-' + labelTitle + '"></div>').insertBefore(input).append(input, label);
// find all inputs in this set using the shared name attribute
var allInputs = $('input[name='+input.attr('name')+']');
//bind custom event, trigger it, bind click,focus,blur events
input.bind('updateState', function(){
if (input.is(':checked')) {
if (input.is(':radio')) {
allInputs.each(function(){
$('label[for='+$(this).attr('id')+']').removeClass('checked');
});
};
label.addClass('checked');
}
else { label.removeClass('checked checkedHover checkedFocus'); }
})
.trigger('updateState')
.click(function(){
$(this).trigger('updateState');
})
}
});
从我的理解,他们的代码基本上查找所有收音机输入,然后定义一个叫做updateState的特殊触发器。然后他们在输入的点击功能中触发它。
因此,每次单击输入单选按钮时,updateState都会触发,然后为该单选按钮的标签设置一个类。类的改变会改变标签的CSS。
单击标签时,也会单击该标签的输入(运行jQuery的.click()函数)。
我所做的是将我所有的输入单选按钮设置为display:none。这样用户只需点击该标签,并且秘密地点击了一个单选按钮。
如果输入被隐藏,则.click()函数将不会为输入运行。
我认为有两种方式传递这样的:
一个),而不是有无线的。点击()函数触发handlestate,有标签的。点击()函数处理它来代替。这可能无法正常工作,因为那时单选按钮可能实际上没有被点击(这弄乱了我的表单)
b)当单击标签时,手动触发收音机的点击功能。但是,这可能会导致它在每个浏览器中被触发两次,但IE。我不知道如何引用标签的广播,也不知道如何停止触发两次。
为我工作! – 2012-07-20 16:41:00