Bootstrap .popover('show'),. popover('hide')不起作用。将其绑定到单击工作

时间:2013-07-31 11:21:25

标签: javascript twitter-bootstrap

我有一个已绑定到弹出窗口的按钮。当有人点击popover中的一个表情符号时,我想隐藏popover。但是,$("#smiley").popover('hide')不起作用。

不幸的是,我无法使用准系统代码重现这一点 - 它只发生在实时网站上,https://coinchat.org

相关代码:

$("#smiley").popover({html: true, trigger: 'click', placement: 'top', content: smileyContent, title: 'Smilies'});

稍后在一个函数..

$("#smiley").popover('hide'); // not working

8 个答案:

答案 0 :(得分:8)

https://inputs.io/js/buttons.js中,jQuery插件jQuery.fn.popover会在某种加载事件上被覆盖,因此此时$("#smiley").popover("hide")不再调用引导程序,而是由{{1}提供的插件}}

代码片段:

inputs.io

对于特定于应用程序的代码使用jQuery插件名称空间确实非常令人反感。

临时修复可能是Inputsio.load = function(){ (function(){(function(e){return e.fn.popover=function(t)

答案 1 :(得分:2)

这是一个与你的代码“相似”的工作小提琴

http://jsfiddle.net/6hkkk/7/

HTML

<div style="margin-top:100px">
    <span id="smiley" data-title="smile" data-toggle="clickover">
        <i class="icon-comment"></i>
    </span>
</div>

的javascript

ClosePop = function () {
    $('#smiley').popover('hide');
}

var elem = '<button data-toggle="clickover" class="btn" onclick="ClosePop();"><i class="icon-off"></i></button>';

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

答案 2 :(得分:1)

替换

$("#smiley").popover('hide');

$("#smiley").click();

在控制台中为我工作。

答案 3 :(得分:0)

尝试从

移动id="smiley"

<span class="btn tenpx smileypopover popover-trigger" id="smiley" data-original-title="" title="">

<div class="popover fade top in" style="top: 430px; left: 308.5px; display: block;">

答案 4 :(得分:0)

这样的事情是不可能的吗?

$('#smileylist a').click(function(){
  if($('.popover').css('display','block')){
    $(this).css('display','none');
  }
});

$('.smileypopover').click(function(){
  if ($('.popover').css('display','none')){
    $(this).css('display','block');
  }
});

当我点击笑脸时它会关闭弹出窗口,然后我再次打开它,直到我运行第二块代码。它非常接近,但我不确定我到底错过了什么。

答案 5 :(得分:0)

如果您的弹出框选项中有选择器属性(例如,动态HTML内容通常需要),请务必在调用“隐藏”方法时使用相同的选择器。

以下内容无法隐藏弹出框(对于添加到DOM的新内容)。

//enable popover
$(document).popover({
  html: true,
  selector: "[data-popover]"
});

//attempt to hide popover
$(document).popover('hide');

相反,请使用:

//enable popover
$(document).popover({
  html: true,
  selector: "[data-popover]"
});

// hide popover
$('[data-popover]').popover('hide');

答案 6 :(得分:0)

Bootstrap 无法独立访问弹出窗口 ID。我们必须读取与元素相关的 aria-describedby 属性。

下面的代码可以解决您的问题:

$("#"+$(relatedElementId).attr("aria-describedby")).remove();

relatedElementId:popover 的关联元素

答案 7 :(得分:-1)

addSmiley功能中,您可以替换

$("#smiley").popover('hide');

$(".popover").hide(); 

它会起作用,但不知道它对你是否合适。