我们都知道因为 IE6 的 BUG,显示页面内的 div 对话框之前要先把页面当中的 select 元素都隐藏掉。在 jQuery 中就是:
$('select').hide();
当关闭对话框时,就要:
$('select').show()
但是出于业务逻辑,打开 div 对话框之前就有某些 select 已经隐藏起来,当对话框关闭后,这些 select 不应该显示。所以隐藏 select 的时候就只能隐藏那些显示出来的 select,并把它们保存起来:
window.hiddenSelects = $('select:visible'); window.hiddenSelects.hide();
关闭对话框时:
window.hiddenSelects.show();
这里 jQuery 有一点小问题:对话框中包含的 select 虽然是隐藏的,但实际上因为它们本身没有隐藏的样式属性,所以 jQuery 仍然认为它们是可见的。于是打开对话框后,对话框中的 select 被一并隐藏了。所以在打开对话框时应该这样:
window.hiddenSelects = $('select:visible').filter(':not(div.innerdialog select)'); window.hiddenSelects.hide();
这样就把 div.innerdialog 里面的 select 排除掉了。
jQuery 真的是方便啊。