【发布时间】:2010-12-04 11:17:11
【问题描述】:
所以我有一些<select> 标签,我想在IE 中显示全部内容。我环顾四周,找到了fewfixes,但我不想包含 YUI,因为我已经在其他地方使用 jQuery,并且更愿意将选择保留在页面上而不是用 DIV 替换它。
在我提出的代码中,FF3 运行良好。在 Internet Explorer (6,7,8) 中,第一次单击 <select> 会使下拉菜单闪烁,然后它就会消失。我已经尝试用focus 和mousedown 代替代码中的click 事件,但没有成功。
如果我在autoWidth 中删除了element.css 的两个设置,则下拉菜单会按预期工作,但不会获得很好的宽度。有谁知道什么会导致css的设置在IE中导致下拉失败?
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
var count = 0;
autoWidth = function(e) {
$element = $(e.target)
$element.css("width","auto");
if($element.width() < $element.data("originalWidth"))
{
$element.css("width", $element.data("originalCSSWidth"));
}
}
resetWidth = function(e) {
$element = $(e.target)
$element.css("width", $element.data("originalCSSWidth"));
$("#counter").text(++count);
}
recordEvent = function(e) {
$("#event").text($("#event").text() + " " + e.type);
}
dropDownIEWidthFix = function() {
//if($.browser.msie)
//{
$dropDown = $(this);
$dropDown.data("originalWidth", $dropDown.width());
$dropDown.data("originalCSSWidth", $dropDown.css("width"));
$dropDown.blur(recordEvent);
$dropDown.blur(resetWidth);
$dropDown.change(recordEvent);
$dropDown.change(resetWidth);
$dropDown.click(recordEvent);
$dropDown.click(autoWidth);
//}
};
$(function() {
$("select.officeItemList").each(dropDownIEWidthFix);
});
function trackingSelectionChanged(select)
{
$("#event").text($("#event").text() + " inlineOnChange");
}
</script>
</head>
<body>
<div style="overflow:hidden;width:148px;">
<select class="officeItemList" style="width:148px;" onchange="trackingSelectionChanged(this);">
<option value="1">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="10">executive</option>
<option value="11">janitor</option>
<option value="12">developer</option>
</select>
</div>
<div style="overflow:hidden;width:160px;">
<select class="officeItemList" style="width:160px;" onchange="trackingSelectionChanged(this);">
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="10">executive</option>
<option value="11">janitor</option>
<option value="12">developer</option>
</select>
</div>
<div style="overflow:hidden;width:160px;">
<select class="officeItemList" style="width:160px;" onchange="trackingSelectionChanged(this);">
<option value="1">eee</option>
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">ffff</option>
<option value="10">executive</option>
<option value="11">janitor</option>
</select>
</div>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
AdjustWidth fired :<span id="counter"></span> times
<div id="event"></div>
</body>
【问题讨论】:
标签: jquery internet-explorer drop-down-menu