2013-04-25 202 views
8

我做了一个jsFiddle,我在图标上使用twitter引导弹出窗口功能。如何关闭弹出式窗口中的按钮的自举弹出窗口?

<div style="margin-top:200px"> 
    <ul> 
     <li class="in-row"> 
      <a href="#" id="meddelanden" data-title="Meddelanden" data-toggle="clickover" 
      data-placement="right"><i class="icon-globe"></i></a> 
     </li> 
    </ul> 
</div> 

的jQuery:

var elem = '<div class="well"><a href="google.com">Message one, From someone.</a></div>'+ 
    '<div class="well"><a href="google.com">Message one, From someone.</a></div>'+ 
    '<button id="close-popover" class="btn btn-small btn-primary pull-right">Close please!</button>'; 

$('#meddelanden').popover({animation:true, content:elem, html:true}); 

我似乎并没有能够与它里面的按钮关闭酥料饼。我试图对id“close-popover”做一个jquery点击函数,但注意到会发生。 (我没有包括我试图在jsfiddle中关闭它)

对于如何使用弹出窗口中的按钮关闭弹窗的任何建议?

问候, 比尔

回答

7

试试这个: - http://jsfiddle.net/6hkkk/

var elem = '<div class="well"><a href="google.com">Message one, From someone.</a></div>'+ 
    '<div class="well"><a href="google.com">Message one, From someone.</a></div>'+ 
    '<button id="close-popover" data-toggle="clickover" class="btn btn-small btn-primary pull-right" onclick="$(&quot;#meddelanden&quot;).popover(&quot;hide&quot;);">Close please!</button>'; 



$('#meddelanden').popover({animation:true, content:elem, html:true}); 
+1

谢谢!这工作像一个魅力,而没有其他建议做。我非常感谢你的帮助! /比尔 – 2013-04-26 04:19:36

+0

没问题,我很高兴它有一些帮助解决您的问题... :) – PSL 2013-04-26 04:20:19

+0

更好的方法是将类“关闭”添加到按钮,并添加此处理程序进行关闭操作: $ (document).on(“click”,“.popover .close”,function(){$(this).parents(“。popover”)。popover('hide');}); – 2017-11-08 07:12:49

0

试试这个:

<input type="button" onclick="$(this).parent().hide();" value="close"> 

通过传递$(这)你引用按钮和父引用按钮坐在

+0

我编辑..有语法错误..这应该通过关闭按钮的父元素 – 2013-04-25 23:58:40

+0

不幸的是,并没有这样做。它并没有关闭所有的弹出窗口(只有它是父窗口,而不是头部等)。你也不能回弹,再次点击图标。 – 2013-04-26 00:11:17

+0

dam我没有看到你的jfiddle链接 但是.. $('#meddelanden')。popover('hide');是要走的路.. 你应该接受jon__o作为答案 – 2013-04-26 04:15:17

3

元素如何一点点onclick:

<button onclick="$('#meddelanden').popover('hide');" class="btn btn-small btn-primary pull-right">Close please!</button> 

或者功能如何离子:

<button onclick="close_please();" class="btn btn-small btn-primary pull-right">Close please!</button> 

与...

function close_please() { 
    $('#meddelanden').popover('hide'); 
} 

或者它已经被创建后绑定到按钮如何。

$('#meddelanden').popover({animation:true, content:elem, html:true}); 
$('#close-popover').bind('click', function(){ 
    $('#meddelanden').popover('hide'); 
}); 
0

在您的标题酥料饼的构造将这个......

'<button class="btn btn-danger btn-xs pull-right" 
onclick="$(this).parent().parent().parent().hide()"><span class="glyphicon 
glyphicon-remove"></span></button>some text' 

...得到一个红色的小 'X' 顶部按钮右角

//$('[data-toggle=popover]').popover({title:that string here}) 

我给相同的答案https://stackoverflow.com/a/23556160/3603692 我希望这是允许的。

+0

这确实隐藏了弹出窗口,但没有正确设置它的新状态,所以再次点击触发按钮不会显示弹出窗口(我想它会重新隐藏它),您必须单击两次以获取回弹,这不是真的可以接受。 – youen 2015-01-23 08:59:35

2

前面的例子有两个主要缺点:

  1. 以某种方式“关闭”按钮的需要,要知道被引用的元素的ID的。
  2. 需要在'shown.bs.popover'事件上添加关闭按钮的'click'侦听器;这也不是一个好的解决方案,因为每次显示“弹出窗口”时,您都会添加这样的侦听器。

下面是一个没有这种缺点的解决方案。

默认情况下,'popover'元素被插入到DOM中被引用的元素之后(然后注意被引用元素和popover是直接的兄弟元素)。因此,当点击'close'按钮时,您可以简单地查找最接近的'div.popover'父级,然后查找此父级的前一个兄弟元素。

只需添加以下代码“关闭按钮的 'onClick' 处理程序:

$(this).closest('div.popover').prev().popover('hide'); 

例子:

var genericCloseBtnHtml = '<button onclick="$(this).closest(\'div.popover\').prev().popover(\'hide\');" type="button" class="close" aria-hidden="true">&times;</button>'; 

$loginForm.popover({ 
    placement: 'auto left', 
    trigger: 'manual', 
    html: true, 
    title: 'Alert' + genericCloseBtnHtml, 
    content: 'invalid email and/or password' 
}); 
+1

据我所知,如果您设置数据容器,以便弹出不在其触发按钮旁边(在我的情况下,我设置data-container =“body”以使其显示在触发容器的上方)。有没有办法在所有情况下实际检索popover? – youen 2015-01-23 08:54:48

0

替代不会对点击呼叫功能:

Javascript

var $popoverParent = $('.popover-parent').popover(); 

//allow to close when close button clicked 
//register listener before popover shown 
$popoverParent.on('shown.bs.popover', function() 
{ 
    //get the actual shown popover 
    var $popover = $(this).data('bs.popover').tip(); 

    //find the close button 
    var $closeButton = $popover.find('.close-btn'); 

    $closeButton.click(function(){ 
     $popoverParent.popover('hide'); 
    }); 
}); 

//show your popover 
$popoverParent.popover('show'); 
-1

我在我的网站上有很多popovers,他们都有相同的自定义标题栏,所以他们都有相同的关闭按钮。因此,我无法将ID传递给onclick处理程序。相反,我决定搜索公开的popover(一次只能打开一个),然后关闭它。

function closeMe() { 
    $(document).find('.popoverIsOpen').popover('hide'); 
}