`
solonote
  • 浏览: 89976 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

解决IE浏览器select宽度固定问题 by JQuery

阅读更多
在IE6和IE7浏览器下,如果设置了select的宽度,而option比设置的这个宽度要宽,则有一部分会被挡住.
这个issue只在IE6和IE7下存在,其他浏览器都没有这个问题.

在网上看了几个解决办法,但都有些小bug,所以自己用JQuery解决了这个问题.


function select_fix_ie(el) {
	var isOpen = $(el).data("isOpen");
	if (isOpen != null) {
		return;
	}

	$(el).mousedown(function() {
				var isOpen = $(this).data("isOpen");
				if (isOpen) {
					return;
				}
				$(this).data("isOpen", true);

				var clone_selection = $(this).data("clone");
				if (clone_selection == null) {
					clone_selection = $("<div></div>").get(0);
					$(clone_selection).insertAfter(this);
					$(clone_selection).css("display", "block");
					$(clone_selection).css("width", $(this).css("width"));
					$(clone_selection).css("height", "20px");
					$(clone_selection).css("position", $(this).css("position"));
					$(clone_selection).css("z-index", $(this).css("z-index"));
					$(this).data("clone", clone_selection);
				}

				$(clone_selection).show();
				$(clone_selection).css("visibility", "hidden");

				var position = $(this).position();
				var oldWidth = $(this).width();
				$(this).css("width", "auto");
				var newWidth = $(this).width();
				if (oldWidth >= newWidth) {
					$(this).css("width", $(clone_selection).css("width"));
				}
				$(this).css("top", position.top + "px");
				$(this).css("left", position.left + "px");
				$(this).css("position", "absolute");
				$(this).css("z-index", "1000");
			}).blur(function() {
				select_fix_ie_close(this);
			}).change(function() {
				select_fix_ie_close(this);
			})

	$(el).data("isOpen", false);
}

function select_fix_ie_close(el) {
	var isOpen = $(el).data("isOpen");
	if (isOpen) {
		var clone_selection = $(el).data("clone");
		$(clone_selection).css("display", "none");
		$(el).css("position", "");
		$(el).css("width", $(clone_selection).css("width"));
		$(el).css("top", "");
		$(el).css("left", "");
		$(el).css("z-index", $(clone_selection).css("z-index"));
		$(el).data("isOpen", false);
	}
}


可以在附件里面下载使用的例子
分享到:
评论
2 楼 185552143 2016-04-27  
IE8不行啊
1 楼 愤怒的程序猿 2013-12-26  
IE8不行啊

相关推荐

    基于Jquery模拟Select,解决IE显示问题

    本文将深入探讨如何使用Jquery来模拟Select,以便更好地解决在IE中遇到的显示问题。 首先,让我们了解为什么要在IE中模拟Select。Internet Explorer,特别是早期版本,如IE6、7和8,存在一些与CSS兼容性和渲染问题...

    固定宽度下拉列表select中option内容显示不全问题解决方法

    然而,在某些情况下,特别是在固定宽度的`&lt;select&gt;`元素中,如果`&lt;option&gt;`的内容过长,可能会导致内容显示不全,只显示部分内容或者超出边界。这种问题会给用户带来不便,因为他们可能无法清楚地看到所有可选项。...

    jquery select2组件

    **jQuery Select2组件详解** `jQuery Select2`是一款强大的、高度可定制的下拉选择框插件,它在原生HTML `&lt;select&gt;` 元素的基础上提供了丰富的功能和优秀的用户体验。这款组件广泛应用于网页开发中,使得传统的单选...

    jquery select2

    为了解决这些问题,jQuery社区推出了一个强大的插件——jQuery Select2。Select2不仅提供了美观的界面,还增强了用户体验,特别是对于大型数据集的搜索功能,使得在下拉框中快速找到所需选项变得轻而易举。 一、...

    jquery.editable-select

    6. **压缩和非压缩版本**:提供的 `jquery.editable-select.js` 和 `jquery.editable-select.min.js` 分别是未压缩和压缩后的版本。在开发阶段,可以使用未压缩版方便调试,而在生产环境中,压缩版可以减少文件大小...

    解决IE6 中select 穿透 div 等层的问题

    在互联网的早期,Internet Explorer 6 (简称IE6) 是一款广泛应用的浏览器,但它的兼容性和渲染机制存在诸多问题,其中一个问题就是“select穿透div”的现象。这个问题在现代浏览器中通常不会出现,但在IE6中,`...

    jquery下拉菜单插件SelectMenu

    **jQuery下拉菜单插件SelectMenu详解** 在网页开发中,下拉菜单是常见的交互元素,用于提供多种选择项供用户进行操作。`SelectMenu.js` 是一款基于 jQuery 的高效下拉菜单插件,它提供了丰富的特性,使开发者能够...

    select2(jquery)插件下载

    **jQuery Select2插件详解** Select2是一款基于jQuery的增强型下拉选择框插件,它极大地改进了原生HTML `&lt;select&gt;` 元素的用户体验和功能。标题中的"select2(jquery)插件下载"指的是这个插件的获取途径,通常通过...

    完美解决IE6下select控件样式

    "完美解决IE6下select控件样式"的资源针对的就是这个历史悠久的问题。Select控件是HTML中用于创建下拉菜单的元素,但在不同的浏览器中,其默认样式可能会有很大差异,特别是对于IE6,它的呈现效果通常不符合现代网页...

    jQuery手机下拉框select

    jQuery库提供了一种优雅的方式来解决这个问题,使得在手机上使用下拉框变得更加友好和可定制。`jQuery手机下拉框select` 主要关注于改善移动端的用户体验,通过JavaScript和CSS增强下拉框的外观和功能。 ### jQuery...

    jquery实现select带模糊搜索下拉选择框

    在网页开发中,`jQuery` 是一款非常流行的 JavaScript 库,它简化了DOM操作、事件处理、动画制作等任务。本教程将详细讲解如何使用 `jQuery` 实现一个具有模糊搜索功能的下拉选择框,以提升用户在交互时的体验。 ...

    jquery.selectbox.js select下拉菜单美化代码

    jquery.selectbox.js select下拉菜单美化代码 jquery.selectbox.js select下拉菜单美化代码 jquery.selectbox.js select下拉菜单美化代码

    jQuery下拉查询筛选插件Combo Select

    5. **易用性**:通过简单的jQuery选择器和方法调用即可实现,如`$('select').comboSelect()`,使得集成到现有项目中非常便捷。 ### 使用步骤 1. **引入资源**:首先在HTML文件中引入jQuery库和`Combo Select`插件...

    强大的jquery下拉分页选择插件SelectPage

    这个插件旨在解决用户在大型数据集中的选择问题,提供了一种高效且用户友好的方式来浏览和选择数据。以下是SelectPage.js的主要特点: 1. **界面简洁**:设计简洁明了,使用户能够轻松理解和操作。它将大量的选项...

    jquery select插件带搜索框的下拉选择框代码

    在本文中,我们将深入探讨如何使用jQuery的"searchableSelect"插件来创建一个具有搜索功能的下拉选择框。这个插件对于那些需要在大量选项中快速查找和选择的项目非常有用,它大大提升了用户体验。 首先,让我们了解...

    jQuery UI dialog IE6下处理select框被遮挡jquery.bgiframe.js

    jQuery UI dialog IE6下处理select框被遮挡jquery.bgiframe.js

    select选择框控件jquery-editable-select支持编辑输入

    若想针对特定的`&lt;select&gt;`应用插件,只需更改选择器即可。 `新建文本文档.txt`可能是插件的使用说明或示例代码,但因格式限制,我们无法在此查看具体内容。通常,官方文档或示例会涵盖如何配置插件选项、处理事件...

    jquery 封装select实现select自定义样式插件jquery.easydropdown.min.js

    《jQuery封装Select实现自定义样式插件:jquery.easydropdown.min.js》 在Web开发中,Select元素是常用的数据选择控件,但其默认样式通常较为单一,无法满足设计师们对界面美观度的需求。jQuery库为我们提供了丰富...

    JQuery插件select2

    它旨在解决原生HTML下选择器样式单一、功能受限的问题,提供更加友好、易用且可自定义的交互体验。 在网页设计中,传统的`&lt;select&gt;`元素通常样式简单,难以进行个性化定制。Select2通过其强大的功能和丰富的API,...

    jquery实现select互斥联动

    为每个`select`元素添加`change`事件监听器,当用户更改选项时触发相应函数。 3. 逻辑处理:在`change`事件的回调函数中,获取当前选中的值,并根据预设的联动规则更新其他`select`元素的选项。这可能涉及清除某些...

Global site tag (gtag.js) - Google Analytics