Прежде всего, я чувствую боль этого ограничения в IE - блеф!
Просто подумал, что я тоже поделюсь этим, потому что мне кажется, что это работает. Я выбрал почти такой же подход, но для каждого выбранного элемента. В моем случае я знаю, какие списки могут иметь длинные данные.
Вместо того, чтобы делать элементы выбора абсолютными, я оставил их встроенными и обернул их в DIV со скрытым переполнением, так как внешний вид должен быть согласованным, также он применяет этот «взлом» только в том случае, если это IE и расширенная ширина больше текущей ширины.
Чтобы использовать это для всех полей выбора, вы можете использовать что-то вроде:
$("select").each(function(){
$(this).IELongDropDown();
});
Или, очевидно, на основе каждого элемента по id.
Вот плагин jquery:
(function($) {
$.fn.IELongDropDown = function(cln) {
if (jQuery.browser.msie) { //only IE has problems with long select boxes
var el = this;
var previousWidth = el.width();
var divWrapper = "<div style='padding:0;margin:0;overflow:hidden;width:"+ previousWidth +"px'></div>";
el.wrap(divWrapper);
var newWidth = el.width("auto").width();
el.width(previousWidth);
if(newWidth > previousWidth) {
el.bind("mousedown", function(){ return el.width("auto").focus(); });
el.bind("blur", function(){ return el.width(previousWidth); });
el.bind("change", function(){ return el.width(previousWidth); });
}
}
return this;
};
})(jQuery);
Надеюсь, это кому-нибудь поможет