有没有办法让它更快?
此函数管理一些动态表单元素。
function HideAllDivs(parentDiv) {
var divs = $('#' + parentDiv + ' div'), divsLength = divs.length;
for (var a = 0; a < divsLength; a++) {
var obj = $('#' + divs[a].id);
obj.find('input[type=radio]:checked').removeProp('checked');
obj.find('input[type=checkbox]:checked').removeProp('checked');
obj.find('input[type=text]').val('');
obj.find('select').val('');
obj.find('input[type=radio]').each(function () { $(this).removeClass('selectedCtrl'); });
obj.hide(1);
}
}
谢谢, 大卫
答案 0 :(得分:4)
您可以使用..来快速(略微)加速..
function HideAllDivs(parentDiv) {
$('#' + parentDiv + ' div')
.hide()
.find('input, select')
.removeProp(':checked') // will be ignored where not applicable
.removeClass('selectedCtrl') // will be ignored where not applicable
.filter('input[type="text"], select').val('');
}
答案 1 :(得分:1)
无需使用循环,您可以使用单选按钮
改进2个操作function HideAllDivs(parentDiv) {
var divs = $('#' + parentDiv + ' div');
var radios = divs.find('input[type=radio]')
radios.filter(':checked').removeProp('checked');
radios.find('.selectedCtrl').removeClass('selectedCtrl');
divs.find('input[type=checkbox]:checked').removeProp('checked');
divs.find('input[type=text], select').val('');
divs.hide(1);
}
答案 2 :(得分:0)
我认为这应该稍快一些......
function HideAllDivs(parentDiv) {
var $divs = $('#' + parentDiv + ' div');
$divs
.find('input[type=text],select').val('').end()
.find(':checked').removeProp('checked').end()
.find('.selectedCtrl[type=radio]').removeClass('selectedCtrl').end()
.hide(1);
}
以下性能测试
*编辑:失败,我实际上没有运行测试-_-;固定的。* 强>
http://jsperf.com/hiding-divs-19362135