检测选择选项的鼠标悬停在所有浏览器(detect mouseover of select optio

2019-09-22 03:53发布

我试图让一个框,弹出一个下拉菜单的一侧是内嵌在当前上空盘旋选项。 这是不容易所以这里解释的是一个工作示例(在Firefox中唯一)。 http://jsfiddle.net/WJaVz/21/

香港专业教育学院尝试在Chrome和IE,但也不显得那么永远不会出现在预览框中识别选项的MouseEnter事件。 香港专业教育学院试图改变事件鼠标悬停和专注于他们更喜欢他们的情况下,但它仍然无法在IE和Chrome浏览器。 (未测试歌剧或Safari尚未。)

一种想法是,也许使下拉一个无序列表,并使它看起来像一个下拉菜单,我想,当李娜MouseEnter事件我能察觉。

有谁知道解决这个所以它在大多数如果当前浏览器的工作原理不是所有的人,而不必重建大多数的呢?

Answer 1:

@ SubstanceD的解决方案是我发现最好的,但是它有一些可访问性问题,所以我重新工作它使用单选按钮的一个字段。

HTML:

<div id="colourlist">red</div>
<fieldset id="colours">
  <label for="red">red<input type="radio" name="foo" id="red"/></label>
  <label for="blue">blue <input type="radio" name="foo" id="blue"/> </label>
  <label for="green">green<input type="radio" name="foo" id="green"/></label>   
  <label for="orange">orange<input type="radio" name="foo" id="orange"/></label>       
</fieldset>
<div id="preview"></div>

CSS:

body{
    margin: 0;
    padding: 50px;
}
input {
    opacity:0;
}
label {
    display:block;
    height:20px;
}
#colourlist{
    position: absolute;
    border: 1px solid #B5B0AC;
    width: 200px;
    height: 21px;
    background: url('http://www.thermaxindia.com/images/dropdown_arrow.JPG') 180px 0 no-repeat;    
}
label:hover{
    background-color: #3399FF;
}
#colours{
   display: none;
   position: relative;
   top: 22px;
   left: 0;
   width: 200px;
   position: relative;
   border: 1px solid #B5B0AC;
   overflow-y: scroll;
   height:60px;
}
#preview{
   display: none;
   position: relative;
   background-color: #fff;
   border: 1px solid #ccc;
   padding: 10px;
   width: 250px;
   height: 30px;  
}

JS:

$("#colours label").on('mouseenter', function(){
    var O = $(this).offset();
    var CO = $("#colours").offset();
    $("#preview").css("top", O.top-150).show();
    $("#preview").css("left", CO.left+160);
    var text = $(this).text();
    $("#preview").css("background-color", text);
});
$("#colours input").on('click', function(){
    var text = $(this).attr("id");
    $("#colourlist").text(text);
    $("#colours").hide();
    $("#preview").hide(); 
});
$("#colourlist").on('click', function(e){
    e.stopPropagation();
    $("#colours").show();   
});
$("body").on('click',function(e){
    $("#colours").hide();
});

这里的小提琴: http://jsfiddle.net/MikeGodin/CJbeF/109/



Answer 2:

谢谢mcpDESIGNS,我曾尝试一些事情,但无济于事。 我已经结束了重建它作为一个无序列表。 香港专业教育学院风格的名单看起来像一个下拉菜单,那么当用户鼠标悬停在无序列表李....这在所有浏览器上运行,我可以很容易地检测= WIN 8D

下面的代码: http://jsfiddle.net/CJbeF/22/



文章来源: detect mouseover of select option in all browsers