为什么onmouseout在select标签内部调用每个选项

时间:2017-11-29 07:18:36

标签: javascript jquery html5

多选项选项调用onmouseout函数为每个选项更改而不从选择框中出来,我可以知道此事件发生的原因吗?

从select标记中删除multiple属性时修复了错误。

function mout(e){
        console.log("mouse is out");
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <select id="x" multiple onmouseout="mout(this)">
        <option value="1">11:00 10-10-2017</option>
        <option value="2">11:00 10-10-2017</option>
        <option value="3">13:00 10-10-2017</option>
    </select>

3 个答案:

答案 0 :(得分:2)

使用mouseleave

  

当鼠标指针离开任何子节点时,会触发mouseout事件   元素以及所选元素。

     

mouseleave事件仅在鼠标指针离开时触发   选定的元素。

function mout(e){
        console.log("mouse is out");
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <select id="x" multiple onmouseleave="mout(this)">
        <option value="1">11:00 10-10-2017</option>
        <option value="2">11:00 10-10-2017</option>
        <option value="3">13:00 10-10-2017</option>
    </select>

答案 1 :(得分:1)

鼠标输出类似于onfocusout;当select启用anycpu时,UI就是onmouseout = onfocusout = onhover;

同样不在multiple禁用期间我们有一个传统的下拉列表,其中onmouseout在multiple之后被触发。

希望这有帮助。

答案 2 :(得分:1)

您可以在jQuery上使用mouseleave

&#13;
&#13;
$( "#x" ).on( "mouseleave", function(e) {
    console.log("mouse is out");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">   </script>
<select id="x" multiple>
    <option value="1">11:00 10-10-2017</option>
    <option value="2">11:00 10-10-2017</option>
    <option value="3">13:00 10-10-2017</option>
</select>
&#13;
&#13;
&#13;