我有以下 jQuery 代码,用于根据它们是否具有 active=F 或 active=T 自定义属性来隐藏/显示选择中的选项。It works great, however when the select contains a lot of options, it takes 10 seconds or more sometimes to finish and causes the page to lock up. 有人能指点我如何优化这段代码吗?
$(document).ready(function() {
$.fn.toggleOption = function( show ) {
return this.each(function(){
$(this).toggle(show);
if(show){
if($(this).parent('span.toggleOption').length) $(this).unwrap();
$('#unitsSelector').val("");
} else {
$(this).wrap('<span class="toggleOption" style="display: none;" />');
$('#unitsSelector').val("");
}
});
};
var list = $('#unitsSelector option'), buttons = $('.unitToggle');
list.toggleOption(false);
buttons.on('click', function () {
var filter = $(this).hasClass('active') ? "[active=F]" : "[active=T]";
list.toggleOption(true).filter(filter).toggleOption(false);
});
$('.active').click();
});
谢谢!!!
更新
小提琴在这里可用
您会注意到从活动/非活动切换时需要几秒钟才能完成。