$(function () {
        var options = {
          trigger: 'manual',
          content: function () {
            return $('#favoriteOptionMenus').html();
          },
          html: true
        };
        var popoverElement = $("#filterOptions");
        popoverElement.mouseenter(function () {
          if (!popoverElement.attr("aria-describedby")) {
            popoverElement.attr("title", GlobalStringsForAssets.SAVE_SEARCH);
          }
        });
        popoverElement.click(function (e) {
          e.stopPropagation();
          if (popoverElement.attr("aria-describedby")) {
            $("#filterOptions").css({ "background-color": "initial", "color": "#2e6da4" });
            popoverElement.popover("destroy");
          } else {
            options.title = "";
            popoverElement.removeAttr("title");
            popoverElement.popover(options);
            popoverElement.popover("show");
            $(".popover-content #newFavoriteName").prop("value", $("#searchbox").val());
            $("#filterOptions").css({ "background-color": "#2e6da4", "color": "white" });
            $('.popover-content #searchFilter').val('');
            GetSavedFilters($(this), '');
            $('#saveFilterButton #btnSaveFavorite').click(function (e) {
              e.preventDefault();
              e.stopPropagation();
              var name = $('.popover-content #newFavoriteName').val();
              if (name == '') {
                _messagebox.newNotify2(GlobalStringsForAssets.ENTER_NAME, "Error");
                $("#filterOptions").css({ "background-color": "initial", "color": "#2e6da4" });
                return false;
              }
              // Create a new filter
              SaveFilter(-1, name, false);
              var itemShowLength = $('.popover.fade.bottom.in').find('ul.toolmenu li .glyphicon-star-empty').length;
              var newFavitor = $('<li class= "toolmenu filterdata"><span class="toolmenu narrow filterdata" filterfav="false"><span class="glyphicon glyphicon-star-empty toolicon"></span> ' + name + '<span class="glyphicon glyphicon-remove" style="float:right;"></span></span></li>');
              var hr_length = $('.popover.fade.bottom.in').find('ul.toolmenu li hr').length;
              if (hr_length != 0) {
                $('.popover.fade.bottom.in').find('ul.toolmenu li hr').after(newFavitor);
              } else {
                if (itemShowLength > 0) {
                  $('.popover.fade.bottom.in').find('ul.toolmenu').append(newFavitor);
                  if (itemShowLength > 10) {
                    for (var i = 10; i < itemShowLength; i++) {
                      $('.popover.fade.bottom.in').find('ul.toolmenu li').eq(i).remove();
                    }
                  }
                } else {
                  $('.popover.fade.bottom.in').find('ul.toolmenu').append($('<li class= "toolmenu filterdata"><hr class="toolmenu" /></li>'));
                  $('.popover.fade.bottom.in').find('ul.toolmenu').append(newFavitor);
                }
              }
              $('.popover.fade.bottom.in li').css("list-style-type", "none");
              $('#newFavoriteName').val('');
              $('#searchbox').val('');
              if ($('.popover.fade.bottom.in ul.toolmenu').innerHeight() >= 200) {
                $('.popover.fade.bottom.in ul.toolmenu').css({ 'height': '200px', 'overflow-y': 'scroll' });
              }
            });
            $('.popover.fade.bottom.in').on('click', 'span.filterdata span.glyphicon-star-empty', function (e) {
              var filterid = $(this).closest('span.filterdata').attr('filterid');
              ChangeFilterFavorite(filterid, true);
              return false;
            });
            $('.popover-content #searchFilter').on('input', function () {
              GetSavedFilters($('#filterOptions'), $('.popover-content #searchFilter').val());
            });
          }
        })
        $('body').on('click', function (e) {
          $('[data-toggle=popover]').each(function () {
            if (
              $(this).attr("aria-describedby")
              && !$(this).is(e.target)
              && $(this).has(e.target).length === 0
              && $('.popover').has(e.target).length === 0
            ) {
              $(this).popover("destroy");
            }
          });
        })
      });
 
 
实现效果如下:

使用Bootstrap Popover实现一个弹框上三角形的代码记录的更多相关文章

  1. popover带箭头弹框

    我们先来看一下效果吧: 分析:这个带箭头的弹框其实是一个控制器,通过Modal方式展现,但跟传统模态方式效果不一样,我们一眼就能看出. Xib方式实现popover: 1.segue的时候选择Pres ...

  2. WPF 如何自定义一个弹框

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简述: 手工以原生Grid的方式,自定义了一个仿弹窗效果,优点可以自定义,缺点需要自己实现以及维护整个弹窗的效 ...

  3. vue+elementui 新增和编辑如何实现共用一个弹框

    //html代码: //按钮 <el-button type="primary" size="medium" @click="addEquipm ...

  4. vue封装一个弹框组件

    这是一个提示框和对话框,例:   这是一个组件 eject.vue <template> <div class='kz-cont' v-show='showstate'> &l ...

  5. js,ajax,layer笔记(弹出层,在弹出一个弹框)

    整体认识: 因为作用域的问题,js 在页面初次加载时已近加载好了,所以要有第二次弹窗的效果,必须得在第一次成功之后再次让他加载js 代码: /*shaun*/showdetailsPag: funct ...

  6. bootstrap弹框

    http://v3.bootcss.com/javascript/#modals 参考bootstrap官网 模态框做php后端 前端一直不行,但是很多时候 用到ajax都要用到弹框,一直在代码里面找 ...

  7. iOS 可高度自定义的底部弹框

    技术: iOS Objective-C   概述 一个可以让开发者通过编写 tableView 的内容随心所欲的定制自己想要的底部弹框 详细 代码下载:http://www.demodashi.com ...

  8. 弹框alertView

    // 创建一个弹框UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“标题” message:@“显示的具体内容” delegate:s ...

  9. 自定义 popWindow弹框 工具包

    前言:因为Android 没有像IOS一样的ActionSheet,虽然在github上看到有一些类似ActionSheet的库,总觉得不好用,不如自己写一个弹框通用类,样式全部自已来多好. Step ...

随机推荐

  1. db2 索引

    索引:可通过 SYSCAT.INDEXES JOIN SYSCAT.INDEXCOLUSE来查询索引的字段有升序ASC和降序DESC,分别表示为SYSCAT.INDEXES的COLNAMES中索引字段 ...

  2. [转]搞个这样的 APP 要多久

    我有些尴尬地拿着水杯,正对面坐着来访的王总,他是在别处打拼的人,这几年据说收获颇丰,见移动互联网如火如荼,自然也想着要进来干一场,尽管王总从事的行当也算跟IT沾边,但毕竟太长时间不接触技术,有些东西不 ...

  3. C#获取路径总结

    一.获取当前文件的路径 1.  System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName  获取模块的完整路径,包括文件名. ...

  4. Android使用Fragment实现TabHost效果

    现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上, ...

  5. Easy Way to Get All Dependent Library Names 快速获得所有依赖库名称

    在编译一些大型SDK的时候,比如Qt,OpenCV, PCL, VTK, ITK等等,在VS中,我们需要将编译生成的.lib文件加入Linker->Input中,但是往往生成的.lib文件有很多 ...

  6. 使用 tabindex 改变Tab 键顺序

    使用 tabindex原文 https://developers.google.cn/web/fundamentals/accessibility/focus/using-tabindex 在表单上使 ...

  7. hadoop 使用ip配置导致hdfs启动失败

    dataNode 有守护进行,但hdfs web页面上显示没有live node. 错误日志: 2017-06-21 17:44:59,513 ERROR org.apache.hadoop.hdfs ...

  8. MySQL-记一次备份失败的排查过程

                山竹来临,窝在家里整理个人文档.        本篇文章主要讲解排查问题的思路,涉及linux 删除文件的原理.实例误删数据恢复.MySQL实例初始化参数优先级别等,虽然涉及知 ...

  9. Centos7下使用mail发送邮件配置

    参考文档:https://blog.csdn.net/lyf844692713/article/details/81479066 安装环境查看 查看服务是否安装 rpm -qa|grep mail 如 ...

  10. 我心目中的Dream-购物车

    功能要求: 1.要求用户输入自己拥有的总资产,例如:30000 2.显示商品列表的序号,商品名称,商品价格,让用户根据序号选择商品,然后加入购物车 例如: 1 Macbook 12000 2 Logi ...