Css IE用鼠标悬停选择问题

Css IE用鼠标悬停选择问题,css,internet-explorer,select,hover,Css,Internet Explorer,Select,Hover,我和一个朋友正在努力解决IE(7/8)的问题。我们在此构建了一个规范示例: 使用CSS菜单,我们希望在其中有选择。但是,在IE中,当您与选择框交互时,菜单将消失。我们认为这与选择如何影响事件的缺陷有关 有解决办法吗?至少对于纯CSS或DOM黑客?我认为没有一种纯CSS的方法可以解决这个问题。这是由于IE处理选定元素事件的方式存在一个非常常见的错误 但是,您可以使用Javascript解决此问题: <script type="text/javascript"> $(docum

我和一个朋友正在努力解决IE(7/8)的问题。我们在此构建了一个规范示例:

使用CSS菜单,我们希望在其中有选择。但是,在IE中,当您与选择框交互时,菜单将消失。我们认为这与选择如何影响事件的缺陷有关


有解决办法吗?至少对于纯CSS或DOM黑客?

我认为没有一种纯CSS的方法可以解决这个问题。这是由于IE处理选定元素事件的方式存在一个非常常见的错误

但是,您可以使用Javascript解决此问题:

<script type="text/javascript">
    $(document).ready(function () {
        $('.nav_element a').mouseover(function() {
            $('.submenu').hide();
            $(this).parent().find('.submenu').show();
        });

        $('.submenu').mouseover(function() {
            $(this).show();
        });

        $('.submenu').mouseout(function (e) {
            // Do not close if going over to a select element
            if (e.target.tagName.toLowerCase() == 'select') return;
            $(this).hide();
        });

    });    
</script>

$(文档).ready(函数(){
$('.nav_元素a').mouseover(函数(){
$('.submenu').hide();
$(this.parent().find('.submenu').show();
});
$('.submenu').mouseover(函数(){
$(this.show();
});
$('.submenu').mouseout(函数(e){
//如果转到“选择”元素,则不关闭
如果(e.target.tagName.toLowerCase()=='select')返回;
$(this.hide();
});
});    

上面的代码使用jQuery。

这里有一种改进IE7/8中选择行为的方法,但它并没有解决这个问题

更改DOCTYPE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
它至少会工作得更好,但当然不是完美的


我的建议是将select控件更改为html等效控件。我用的是一个视野很好的地方。有许多实现可以满足您的需要。

首先,您需要展开菜单下方的:悬停界面。
因此,在css中添加
width:310px;高度:220px
#导航.导航单元a

(还可以在第二个div上添加一个类或id,其样式为
top:220px


现在,您只需模拟当您在选项之间的选择完成后,单击选择按钮将停止的时触发的鼠标下移——如果您检查选择按钮的对焦状态,您可能可以执行最后一部分,该状态将停止鼠标下移。

您正在谈论的IE版本关于?我看不出IE7和Chromeedit之间有什么区别,你需要与选择框交互。谢谢你的帮助!我要说的是没有解决办法,因为IE似乎没有传播selects选项的mouseover功能。我尝试了几种方法,CSS和Javascript,但都没有结果。哦,好吧,也许其他人会有一些东西。你是在寻找一个只使用CSS和HTML(没有javascript)的解决方案吗?
<script>

    function ddlOut(e) {
        setTimeout(function() { e.className = e.className.replace(' over', ''); }, 1000)
    }

</script>
    #nav .over div.submenu
    {
         display: block;
    }

    #nav .nav_element{
        behavior: expression(
            this.onmouseover = new Function("this.className += ' over'"),
            this.onmouseout = new Function("ddlOut(this)"),
            this.style.behavior = null
        );
    }