有办法让这个更快吗?
此函数管理一些动态表单元素。
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);
}
}谢谢你,大卫
发布于 2013-10-14 14:22:32
你可以用..。
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('');
}发布于 2013-10-14 14:09:58
不需要使用循环,您可以使用单选按钮来改进这两个操作。
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);
}发布于 2013-10-14 14:25:23
我觉得应该再快一点.
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
https://stackoverflow.com/questions/19362135
复制相似问题