5

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

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

相关代码:

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

稍后在函数中..

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

8 回答 8

8

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

代码片段:

Inputsio.load = function(){
    (function(){(function(e){return e.fn.popover=function(t)

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

临时修复可能是$("#smiley").click()

于 2013-08-09T16:00:31.657 回答
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
});
于 2013-08-09T10:08:46.270 回答
1

代替

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

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

在控制台中为我工作。

于 2013-08-09T09:36:10.137 回答
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;">

于 2013-08-01T03:07:50.497 回答
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');
  }
});

当我单击笑脸时,它会关闭弹出框,然后在运行第二个代码块之前我无法再次打开它。它非常接近,但我不确定我到底错过了什么。

于 2013-08-10T04:34:55.807 回答
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');
于 2016-05-26T07:30:00.257 回答
0

Bootstrap 无法单独访问 popover id。我们必须阅读与元素相关的 aria- describeby 属性。

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

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

relatedElementId:popover 的关联元素

于 2021-01-25T23:20:38.133 回答
-1

addSmiley函数中,您可以替换

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

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

它会工作,但不知道它是否适合你。

于 2013-08-09T08:23:47.780 回答