单击动态创建的“真棒字体”图标时,触发弹出窗口时遇到一些麻烦。

index.ejs

<!-- Template for Snazzy Window -->
<script id="marker-content-template" type="text/x-handlebars-template">
    <div class="custom-img" style="background-image: url({{{bgImg}}})"></div>
    <section class="custom-content">
        <h1 class="custom-header">
            {{title}} <i class="fa fa-question-circle" data-placement="right" data-toggle="popover" data-container="body" data-content="And here's some amazing content. It's very engaging. Right?"></i>
            <small>{{governance}}</small>
        </h1>
        <div class="custom-body">{{{body}}}</div>
    </section>
</script>

<script type="text/javascript>
  $(function() {
    var template = Handlebars.compile($('#marker-content-template').html());
  });
</script>


我尝试了各种方法,包括

$(document).on('click', '.fa', function(){
  $('[data-toggle="popover"]').popover('toggle');
});


这是行不通的,现在我在想它是否与Handlebar模板有关?

我该如何处理?

最佳答案

当您运行

$(document).on('click', '.fa', function(){
  $('[data-toggle="popover"]').popover('toggle');
});


,handlebar创建了元素,但尚未将其添加到DOM中。

所以在你的代码中

// 1. Create the element from template with handlebar
var template = Handlebars.compile($('#marker-content-template').html());
// 2. Add the element to the DOM
document.getElementById('#yourTargetContainerId').innerHTML = template;
// 3. add the eventlistener to the elements
$(document).on('click', '.fa', function(){
  $('[data-toggle="popover"]').popover('toggle');
});

08-27 19:29