Как запустить функцию js после загрузки поповерного контента - после нажатия кнопки? - PullRequest
1 голос
/ 18 марта 2019

У меня есть такой тип загрузочного поповера со школьного сайта W3 и отредактированный код для моей ситуации (см. Функцию onPopoverHtmlLoad ()):

<!DOCTYPE html> 
<!-- https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_popover&stacked=h -->
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h3>Popover Example</h3>
  <a href="#" data-toggle="popover" data-html='true'title="Popover Header" data-content="Some content inside the popover <button id='inpopover_button'>false</button>">Toggle popover</a>
</div>

<script>
$(document).ready(function(){
    $('[data-toggle="popover"]').popover();   
});

//how to ensure to run this function on popoverHtmlDomLoad?
function onPopoverHtmlLoad(){
  document.getElementById("inpopover_button").innerHTML = "true"
}
</script>

</body>
</html>

Вопрос в том, как я могу изменить содержимое HTML-данных popover после нажатия кнопки / триггера popover, пожалуйста?Есть ли какая-нибудь функция, например onHtmlDomPopoverLoad?

Я ценю решения в Javascript, но принимаю и помощь JQuery.Я искал похожие проблемы, но пока ничего не нашел.

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Вы можете заменить onPopoverHtmlLoad на:

function onPopoverHtmlLoad(){
    $("#inpopover_button").text("true")
}

И присоедините обработчик событий с помощью:

$('[data-toggle="popover"]').on('shown.bs.popover', onPopoverHtmlLoad)

См. Код: https://codepen.io/anon/pen/MxXwQe

1 голос
/ 18 марта 2019

читайте о событиях попсовой загрузки здесь: https://getbootstrap.com/docs/4.0/components/popovers/#events

$('#myPopover').on('hidden.bs.popover', function () {
  // do something…
})

<!DOCTYPE html> 
<!-- https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_popover&stacked=h -->
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h3>Popover Example</h3>
  <a href="#" data-toggle="popover" data-html='true'title="Popover Header" data-content="Some content inside the popover <button id='inpopover_button'>false</button>">Toggle popover</a>
</div>

<script>
$(document).ready(function(){
    $('[data-toggle="popover"]').popover()
        .on('shown.bs.popover', onPopoverHtmlLoad);
});

//how to ensure to run this function on popoverHtmlDomLoad?
function onPopoverHtmlLoad(){
  document.getElementById("inpopover_button").innerHTML = "true"
}
</script>

</body>
</html>
...