bootstrap 中popover的鼠标悬停下拉菜单效果

时间:2022-02-28 23:34:07

这两天想要做个类似前端网登陆后滑过头像显示个人信息的效果。期间遇到不少问题,记录下来方便以后查找。

html相关

1、为了实现通用性,我在元素上加上了mypop的class和contentdiv属性具体html代码如下

<span class= "mypop" contentdiv ="#pop-infoDiv"> 测试</span >
<pre name="code" class="html">
 contentdiv表示的是要显示的popover的div的id(或者其他jquery的选择也可以) 

2、使自定义的显示div隐藏

 <div id="pop-infoDiv"  hidden>
       <div>< a href=" /view/back/sys"> 系统设置</a ></div>
       <div><img src="eg.jpg"></div>
 </div >

js相关

现在就是js部分了,设定一个base.js,然后引入就可以了

$(function(){
     $( document ).on("mouseover" ,".mypop" ,function(){
          var obj=$(this);
          obj.popover({
             content: function() {
                 return $($(this).attr("contentdiv" )).html();
            },
            html: true,
            placement: 'bottom'
         });
         var _this = this ;
         obj.popover("show" );
         $( ".popover" ).on("mouseleave" , function () {
            obj.popover( 'hide');
         });
     });
     $( document ).on("mouseout",".mypop" ,function(){        <pre name="code" class="html">         var obj=$(this);
         setInterval( function () {
             if (!$(".popover:hover" ).length) {
                 obj.popover( "hide")
             }
         }, 100);
     });
    
});
 在这里主要遇到两个问题, 

1、$( document ).on("mouseout",".mypop" ,function(){ });

这里我开始用的$( ".mypop" ).on("mouselout" , function () {)};但是无效,具体什么原因我也不是很清楚,希望有看到能帮我解惑

2.、在鼠标滑出popover的显示div时

 $( ".popover" ).on("mouseleave" , function () {
            obj.popover( 'hide');
         });
我原本用的mouseout,结果出现不停闪烁的现象,在网上查了资料才知道

a、鼠标指针离开是任何子元素,都会触发 mouseout 事件。

b、只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件

最后,在完成这部分效果的过程中参考了

http://my.oschina.net/geomen/blog/178359

http://www.cnblogs.com/jenney-qiu/archive/2012/02/10/2345338.html