bootstrap popover与a标签点击事件冲突,需要点击两下才能显示问题

做了个消息提示框,在dropdown-menu下的每个item点击弹出Popover框,页面代码如下:

<li class="dropdown" id="header-tasks">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                        <i class="fa fa-tasks"></i>
                        <span class="badge" id="tasknum">0</span>
                        </a>
                        <ul class="dropdown-menu tasks" >
                            <li class="taskli"  data-stopPropagation="true">
                                <a href="#" targetuuid="sf">
                                    <span class="header clearfix">
                                        <span class="pull-left">111</span>
                                        <span class="pull-right">11</span>
                                    </span>
                                </a>
                            </li>
                            <li class="footer">
                                <span id="tasknumtext" class="pull-left"><i class="fa fa-check"></i> 0 tasks</span>
                                <span class="pull-right"><a href="#">See all tasks <i class="fa fa-arrow-circle-right"></i></a></span>
                            </li>
                            
                        </ul>
                    </li>       

原js如下:

$("li.taskli").on('click','a',function(e){     
            var uuid = $(this).attr('targetuuid');
            var taskhtml = '<div id="taskview">' + popheadDivHtml()+'</div>';
            $(this).popover({
                placement:'bottom',
                title:uuid,
                html:'true',
                content:taskhtml
            });
            getResultFromFile(uuid)
        }
    })	

在点击时,发现popover的点击事件与a标签的点击事件冲突,popover需要点击两下才可以弹出

这里就算是在$(this).popover后面加上.popover('show') 或者.popover('toggle')都会有显示问题,于是,只能从判断popover的显示入手,解决这个问题,代码如下:

$("li.taskli").on('click','a',function(e){
        if ($(this).parent().find('div.popover').size()>0)
        {
            $(this).popover('destroy')
        }else{        
            var uuid = $(this).attr('targetuuid');
            var taskhtml = '<div id="taskview">' + popheadDivHtml()+'</div>';
            $(this).popover({
                placement:'bottom',
                title:uuid,
                html:'true',
                content:taskhtml
            }).popover('show');
            
            getResultFromFile(uuid)
        }
    })	

效果图如下:




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值