使用Bootstrap的popover标签中嵌入插件,并且为插件注册事件实现Ajax与后台交互

下午研究了一下bootstrap的popover写了个例子。如果项目很多地方都需要用到可以考虑封装成插件。

javascript代码:

 1 <script type="text/javascript">
 2         var _types = '0';
 3         var _status = '0';
 4        
 5         $(function () {
 6             LoadFilter();
 7         });
 8 
 9         function search() {
10             $.ajax({
11                 ....
12             });
13         }
14 
15         function LoadFilter() {
16             var _content = '';
17             _content += '<div class="menu-item" _t="types"><span class="title">类型</span>'
18             _content += '<div class="btn-group">'
19             _content += '<button >全部</button>'
20             _content += '<button >收入</button>'
21             _content += '<button >支出</button>'
22             _content += '</div>'
23             _content += '</div>'
24             _content += '<div class="menu-item" _t="status"><span class="title">状态</span>'
25             _content += '<div class="btn-group">'
26             _content += '<button >全部</button>'
27             _content += '<button >编辑中</button>'
28             _content += '<button >编辑完成</button>'
29             _content += '<button >复核完成</button>'
30             _content += '</div>'
31             _content += '</div>'
32 
33             $('#btnFilter').popover({
34                 placement: 'bottom',
35                 trigger: 'manual',
36                 html: true,
37                 content: _content
38             }).on('click', function () {
39                 var _this = this;
40                 $(this).popover('show');
41                 $(this).on('shown.bs.popover', function () {
42                     $(document).bind("click", function (e) {
43                         var target = $(e.target);
44                         if (target.closest(".popover").length == 0) {
45                             $(_this).popover('hide');
46                         }
47                     });
48 
49                     $("div[_t='types']").find("button[_v='" + _types + "']").addClass('active');
50                     $("div[_t='status']").find("button[_v='" + _status + "']").addClass('active');
51 
52                     $("div[_t='types']").find('button').unbind('click');
53                     $("div[_t='types']").find('button').bind('click', function () {
54                         $("div[_t='types']").find('button').removeClass('active');
55                         $(this).addClass('active');
56                         _types = $(this).attr("_v");
57                         search();
58                     });
59 
60                     $("div[_t='status']").find('button').unbind('click');
61                     $("div[_t='status']").find('button').bind('click', function () {
62                         $("div[_t='status']").find('button').removeClass('active');
63                         $(this).addClass('active');
64                         _status = $(this).attr("_v");
65                         search();
66                     });
67                 });
68                 $(this).on('hidden.bs.popover', function () {
69                     $(document).unbind();
70                 });
71             });
72         }
73     </script>