Javascript 从样式单选按钮回拨
我正在使用jQuery插件RadioToSlider(),需要确保选中了所有单选按钮组,并在它们被选中时发出警报 我可以这样做,如果他们只是单选按钮,通过检查长度,但因为插件改变了输入按钮,我有困难 我的小提琴是Javascript 从样式单选按钮回拨,javascript,jquery,Javascript,Jquery,我正在使用jQuery插件RadioToSlider(),需要确保选中了所有单选按钮组,并在它们被选中时发出警报 我可以这样做,如果他们只是单选按钮,通过检查长度,但因为插件改变了输入按钮,我有困难 我的小提琴是 谢谢问题不在于插件改变了您的结构(尽管它确实添加了一些插件元素,我不同意这一点),而在于插件没有为转换后的无线电控件触发更改事件,并且交互地设置checked属性似乎也没有这样做 由于插件作者没有为此用例发布API,因此很难知道这是设计还是疏忽造成的,但当单击滑块时,源代码肯定不会触
谢谢问题不在于插件改变了您的结构(尽管它确实添加了一些
插件
元素,我不同意这一点),而在于插件没有为转换后的无线电控件触发更改
事件,并且交互地设置checked
属性似乎也没有这样做
由于插件作者没有为此用例发布API,因此很难知道这是设计还是疏忽造成的,但当单击滑块时,源代码肯定不会触发事件:
this.bearer.find('.slider-level').click( function(){
var radioId = $(this).attr('data-radio');
slider.bearer.find('#' + radioId).prop('checked', true);
slider.setSlider();
});
在我看来,你的选择是:
- 缺点:时间:取决于作者的反应
.slider level
类的click
事件。
- 缺点:脆弱:插件的未来版本可能会将行为附加到不同的选择器上
单击事件,然后捕捉气泡上的单击事件
- 缺点:效率低下:它会检查无线电控制的每一次点击
$(document).ready(function () {
$(".radios").radiosToSlider();
});
var makeIsRadioGroupChecked = function(selector) {
var $radioGroup = $(selector);
return function isRadioGroupChecked() {
return $radioGroup.find(':checked').length > 0;
};
};
var isOptionsChecked = makeIsRadioGroupChecked('#optionsRadioGroup');
var isSizeChecked = makeIsRadioGroupChecked('#sizeRadioGroup');
var areAllGroupsChecked = function() {
return isOptionsChecked() && isSizeChecked();
};
var alertIfAllGroupsChecked = function() {
if (areAllGroupsChecked()) {
alert("all answered");
}
};
$('.radios').on('click', alertIfAllGroupsChecked);
$(document).ready(function () {
$(".radios").radiosToSlider();
});
var makeIsRadioGroupChecked = function(selector) {
var $radioGroup = $(selector);
return function isRadioGroupChecked() {
return $radioGroup.find(':checked').length > 0;
};
};
var isOptionsChecked = makeIsRadioGroupChecked('#optionsRadioGroup');
var isSizeChecked = makeIsRadioGroupChecked('#sizeRadioGroup');
var areAllGroupsChecked = function() {
return isOptionsChecked() && isSizeChecked();
};
var alertIfAllGroupsChecked = function() {
if (areAllGroupsChecked()) {
alert("all answered");
}
};
$('.radios').on('click', alertIfAllGroupsChecked);