Bootstrap 弹出窗口覆盖标题并保持样式

Bootstrap popover override title and keep style

这可能是一个非常简单的问题,但我找不到答案。 如何在弹出窗口中隐藏和显示标题?

        var i = 1;

    function ShowHideTitle() {
        if (i == 1) {
            $('#txt2').attr("data-original-title", "Error");
            $('#txt2').attr("data-content", "Message is error");
            $('#txt2').attr("data-trigger", "hover");
            $('#txt2').attr("data-toggle", "tooltip");
            $('#txt2').attr("data-placement", "bottom");
            $('#txt2').popover({ container: 'body' }).popover('show');
            i = 2;
        } else {
            $('#txt2').attr("data-original-title", "");
            $('#txt2').attr("data-content", "Message is Good");
            $('#txt2').attr("data-trigger", "hover");
            $('#txt2').attr("data-toggle", "tooltip");
            $('#txt2').attr("data-placement", "bottom");
            $('#txt2').popover({ container: 'body' }).popover('show');
            i = 1;
        }
    }

当我尝试上面的代码时:

迭代 1:带有标题和内容的弹出窗口

迭代 2:没有标题和内容的弹出窗口

迭代 3:没有标题和内容的弹出窗口(我希望这个与迭代 1 相同,但它不再显示标题 (header)。

有什么帮助吗?

这是页面 HTML:

<html lang="en">

Temp_Free

<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet" />
<link href="css/bootstrap-theme.min.css" rel="stylesheet" />

<link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css" />

<!-- Site -->
<link href="css/fonts.css" rel="stylesheet" />
<link href="css/site.css" rel="stylesheet" />

<script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/site.js"></script>
<script type="text/javascript" src="js/moment.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script>

<div class="container">
    <div class="row">
        <input id="txt2" value="TextBox2" />
        <button type="button" onclick="ShowHideTitle();">Click Me!!!!</button>
    </div>
</div>
<script>

    var i = 1;

    function ShowHideTitle() {
        if (i == 1) {
            $('#txt2').attr("data-original-title", "Error");
            $('#txt2').attr("data-content", "Message is error");
            $('#txt2').attr("data-trigger", "hover");
            $('#txt2').attr("data-toggle", "tooltip");
            $('#txt2').attr("data-placement", "bottom");
            $('#txt2').popover({ container: "body" }).popover('show');
            i = 2;
        } else {
            $('#txt2').attr("data-original-title", "");
            $('#txt2').attr("data-content", "Message is Good");
            $('#txt2').attr("data-trigger", "hover");
            $('#txt2').attr("data-toggle", "tooltip");
            $('#txt2').attr("data-placement", "bottom");
            $('#txt2').popover({ container: "body" }).popover('show');
            i = 1;
        }
    }
</script>

是的,您可以,只需要一点 destroy 和一些时间来执行。这是 JS:

$(document).ready(function(){
  $('button').click(function(e){
    $('#txt2').popover('destroy');
    setTimeout(ShowHideTitle, 200);
  });
});


var i = 1;

function ShowHideTitle() {
  if (i == 1) {
    $('#txt2').attr({
      "data-original-title":"Error",
      "data-content": "Message is error",
      "data-trigger": "hover",
      "data-toggle": "tooltip",
      "data-placement": "bottom"
    }).popover({ container: 'body' }).popover('show');
    i = 2;
  } else {
    $('#txt2').attr({
      "data-original-title":"",
      "data-content": "Message is Good",
      "data-trigger": "hover",
      "data-toggle": "tooltip",
      "data-placement": "bottom"
    }).popover({ container: 'body' }).popover('show');
    i = 1;
  }
}

在我设置超时之前,销毁调用来不及完成,会导致弹出窗口立即显示然后隐藏。

this updated bootply