`
anct125
  • 浏览: 29789 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

div遮盖select问题

阅读更多

select,object,iframe标签属于系统级别,所以如果div的z-index设为多少都无法遮盖select

解决办法:
可以将select的visibility样式改为hidden

.selectClass{visibility:"hidden";}

 

也可以自己用div做个下拉框,附自己写的js代码,有待完善,呵呵

function DivSelect() {
}
DivSelect.prototype = new DivSelect();
DivSelect.prototype = { 
       init:function(box,id,width,height,bg,url){
           
             this.divId="div_"+id;
             this.hiddenId=id;
             this.width=width;
             this.height=height;
             this.bg=bg;
             this.url=url;
             this.divParent= this.createDiv(this.divId);
             this.selectInit=this.createDiv("init");
             this.selectInit.style.width=width+"px";
             this.selectInit.style.height=height+"px";
             this.selectInit.style.background="#C6E1F9 url("+bg+")";
             this.selectInit.innerHTML="请选择";
             this.divParent.style.width=width+"px";
             this.divParent.style.height=height+"px";
             this.divParent.style.background="#C6E1F9 url("+bg+")";
          
          
             this.divBrother= this.createDiv(this.divId+"_b");
             this.divBrother.style.display="none";
             this.divBrother.style.position="absolute";
             this.divBrother.style.width=width+"px";
          
             this.hiddenObj= document.createElement("text");
             this.hiddenObj.setAttribute("id",this.hiddenId);
             this.hiddenObj.setAttribute("name",this.hiddenId);
         
             this.divParent.appendChild(this.selectInit);
             this.divParent.appendChild(this.hiddenObj);
             var CLASS=this;
             this.selectInit.onclick=function(){
                if(CLASS.divBrother.style.display=="block"){
                      CLASS.divBrother.style.display="none";
                }else{
                      CLASS.divBrother.style.display="block";
                }
             } 
             
             if(box!=undefined&&box.length>0){
                 document.getElementById(box).appendChild(this.divParent);
                 document.getElementById(box).appendChild(this.divBrother);
             }else{
                 document.body.appendChild(this.divParent);
                 document.body.appendChild(this.divBrother);
             }
        },
        
        createDiv:function(id){
          var div = document.createElement("div");
          div.setAttribute("id",id);
          return div;
        },
        
        add:function(data,selectId){
             var CLASS=this;
             for(var i=0;i<data.length;i++){
                var divObj=this.createDiv(data[i].value);
                divObj.innerHTML=data[i].text;
                divObj.onclick=function(){
                     CLASS.boxClick(this)
                }
              
                divObj.onmousemove = function(){
                     CLASS.boxMousemove(this)
                }
              
                divObj.onmouseover = function(){
                     CLASS.boxMouseover(this)
  
                }
              
                if(data[i].value==selectId){
                     CLASS.selectInit.setAttribute("id",data[i].value);
                     CLASS.selectInit.innerHTML=data[i].text;
                     divObj.className="on";
                } 
            
                this.divBrother.appendChild(divObj)
          }
        },
        
        boxClick:function(obj){
              var CLASS=this;
             CLASS.divBrother.style.display="none";
             CLASS.hiddenObj.value=obj.getAttribute("id");
             CLASS.selectInit.setAttribute("id",obj.getAttribute("id"));
             CLASS.selectInit.innerHTML=obj.innerHTML;
             if(CLASS.url!=undefined&&CLASS.url.length>0){
                   //   location.href=CLASS.url+"&"+CLASS.hiddenId+"="+obj.getAttribute("id");
             }
        },
        
        boxMousemove:function(obj){
              var CLASS=this;
              var divs=CLASS.divBrother.getElementsByTagName("div");
             for(var i=0;i<divs.length;i++){
                       divs[i].className="";
             }
             obj.className="on";
        },
        
        boxMouseover:function(obj){
           obj.className="";
        }
}

 

调用方法:

 

var s=new DivSelect();
var data=[{"value":"1","text":"按人气指数排序"},
                {"value":"2","text":"按发布时间排序"},
                {"value":"3","text":"按开展时间排序"}];
s.init("","box",113,20,"下拉框背景图片地址","选择后需要跳转的地址") //初始化div
s.add(data,"3"); //增加数据,3为默认选择的

 

可通过s.boxClick=function(obj){
      alert(obj.getAttribute("id"));
}重写选择触发事件

 

分享到:
评论

相关推荐

    select网页下拉列表与div层遮盖问题

    第一就是比较有名的:一般div浮层在IE6下无法遮盖select元素的问题。首先提供了下面一个实例: 注解:如果你在FirFox下和IE7下看都 在html中关于select元素的问题在很多地方都提出过,而在前段时间的项目中,刚好...

    ie6 select无法被div遮盖的bug解决方法

    通过以上步骤,我们可以成功地使用`&lt;iframe&gt;`作为遮罩层,解决IE6下`&lt;select&gt;`无法被`&lt;div&gt;`遮盖的问题。值得注意的是,虽然这个方法在IE6中有效,但它并不适用于其他现代浏览器,因为这些浏览器已经修复了这个问题...

    最顶层div被flash或者下拉列表遮挡的问题解决

    ### 最顶层div被flash或者下拉列表遮挡的问题解决 在网页设计中,有时会出现顶层的div元素被其他元素如Flash或下拉列表遮挡的情况。这种遮挡问题通常是由于CSS定位属性设置不当造成的,尤其是`z-index`值的设置不...

    解决DIV在IE下被下拉列表select穿透的问题(二)

    这个问题涉及到HTML中的`&lt;div&gt;`元素和`&lt;select&gt;`下拉列表之间的交互,具体表现为在Internet Explorer(特别是旧版本)中,`&lt;select&gt;`元素可能会穿透(z-index问题)或者遮盖住上方的`&lt;div&gt;`元素。 `&lt;div&gt;`元素是...

    Jquery 解决IE6 Select 框总是在图层(div)的上面显示的BUG

    针对这个问题,jQuery提供了一种解决方案,通过创建一个透明的iframe来遮盖Select元素,从而达到让它“隐藏”在其他图层后面的效果。这种方法的基本思路是:当用户滚动或点击某个触发事件时,动态地插入一个透明的...

    DIV遮罩层如何实现

    4. 兼容性考虑:示例代码中特别提到了在IE6浏览器中,如果使用DIV元素作为遮罩层,可能会遇到无法遮挡&lt;select&gt;元素的问题,因此选择了使用元素作为遮罩层,以解决该兼容性问题。另外,还特别考虑了页面在无滚动条时...

    jquery用ul模拟表单select列表/菜单效果

    工作中用select总是遇到很多问题,例如经常出现select无法被div等元素遮盖,我想用其他元素模拟select可能会更好,最近刚学jquery,于是就写了个效果来模拟,顺便练习下,代码很冗长,希望大家多拍砖。

    Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法

    可以遮挡ie6下的select元素 但是在ie6下div没有透明度 2.弹出的div可以一直在浏览器屏幕中间显示 问题: 1.目前不支持.class 只支持#id 2.需要显示的div需要自己设置css 3.在ie6下需要设置css 例如div {_position: ...

    layui layer select 选择被遮挡的解决方法

    1. 找到与layer弹窗关联的CSS类,通常是包含select的最外层div。例如,可能会是`.layui-table-body`、`.layui-table-box`或`.layui-table-view`等类。 2. 修改这些类的`overflow`属性为`visible`。这将允许内容...

    ComboboxTree

    用Div和TreeView模拟的下拉框树. 并解决了Select总在最顶端的问题,即下拉框中的树不被Select控件遮盖 用c# + asp.net 2.0实现 ComboBoxTreeCtrl.ascx为自定义下拉树控件 Default.aspx为例子页面

    asp.net 页面版文本框智能提示JSCode (升级版)

    只需修改文本框onfocus=”fnStartInterval(this,’DropDownList2′)”, 设置好相应的参数即可,同时修复了在IE6下div无法遮盖下拉列表的问题,(IE6下无论如何设置select的z-index或div的z-index属性均无济于事),...

    html技巧代码

    - 在div内添加一个`iframe`,设置其`z-index`低于div,用以遮挡select,防止select下拉列表遮盖div内容。 8. **跨域iframe**: - 注意跨域引用的问题,iframe的`src`属性必须指向同源策略允许的地址,否则可能...

    解决layer弹层遮罩挡住窗体的问题

    这个问题主要是由于遮罩层的DOM元素生成在body的子级,而弹窗内容的DOM元素可能位于其他div内部,不在同一层级,从而造成了遮罩层的遮挡问题。 解决方案: layer官方文档提到,如果弹层内容是DOM元素,应该将其放置...

    javascript创建页面蒙板的一些知识技巧总结第1/3页

    使用`div`层作为蒙板时,可能会遇到无法覆盖`&lt;select&gt;`或`&lt;object&gt;`等问题。这是因为这些元素在某些浏览器中具有较高的优先级,可以通过以下几种方式解决: - **使用`iframe`遮盖`&lt;select&gt;`元素** 通过结合使用...

    web前端面试题1

    10. **IE6常见BUG及解决方法**:包括双边距问题、3像素问题、超链接hover失效、z-index问题、PNG透明问题、min-height问题、select遮盖问题,以及1像素宽度容器问题。 11. **title与alt属性**:`title`用于鼠标悬停...

    史上最全前端面试题(含答案).docx

    10. **IE6常见问题及解决方法**:包括双边距BUG、3像素问题、超链接hover失效、z-index问题、PNG透明问题、min-height问题以及select遮盖问题等,这些问题通常需要针对IE6的特性进行特殊处理。 11. **img标签的...

    用JavaScript实现仿Windows关机效果

    对于IE浏览器的一个特殊问题,`&lt;select&gt;`元素不能被覆盖层遮盖。为了解决这个问题,我们需要在用户触发关机效果时,使用JavaScript将所有`&lt;select&gt;`元素的可见性设为隐藏。 客户端的JavaScript代码通常包括两个部分...

    BAT,WEB前段面试宝典

    解决方法包括但不限于:双边距BUG可以通过display属性解决,PNG透明问题可以使用JavaScript代码更改,min-height可以通过添加important声明解决,以及select在IE6下遮盖问题可以通过iframe嵌套解决。 doctype声明的...

Global site tag (gtag.js) - Google Analytics