在popover中使用jquery

时间:2015-07-31 14:39:13

标签: javascript jquery twitter-bootstrap

我正在尝试在弹出框中添加一些元素,并将一些命令与元素相关联。

假设我有以下阻止:

<div id ="pop_models">
<a href="javascript:;" class="model">TEST MODEL</a>
</div>  

并且

    $(".model").click(function() {
        alert('I work');
    });

如果我点击链接,我会收到一条提醒信息。

但是,如果我使用弹出框显示我的div,则不显示警报,单击它时没有任何反应。

即。我将以下代码与我的popover

相关联
        $('[rel=popover]').popover({ 
            html : true, 
            content: function() {
              return $('#pop_models').html();
            }
        });

似乎$(".model").click(function() {在popover中找不到model类。

2 个答案:

答案 0 :(得分:0)

对于弹出窗口功能......这可能对您有所帮助

<强> HTML

   <a href="#" data-toggle="popover" data-html="true"
      data-content="<p>Example 1" title="Popover Method 1">Popover Method 1 1</a>

<强>的Javascript

$(function(){ 
    $("[data-toggle=popover]").popover();
});

答案 1 :(得分:0)

当您将处理程序绑定到像$('。model')这样的元素时,处理程序会立即绑定到该元素的生命周期。

您的内容函数每次都会返回新的HTML,因此您每次都会在没有处理程序的情况下创建新的DOM元素。

您可以通过以下方式解决此问题:

  1. 确保每次创建时都将点击处理程序添加到元素或
  2. 在某些delegate上注册您的活动 - 一个始终存在于DOM中的稳定元素。最基本(也就是不推荐)的例子是$(body).find('。model')。click(function(){...});
  3. #2很难,因为理论上你不知道Bootstrap实际上会将popover元素插入到DOM中。所以你很难找到一个好的父元素作为委托。

    所以你可能想和#1一起去。您可以通过从Bootstrap注册events来执行此操作,该任务将告诉您元素何时在DOM中。只需添加代码即可在事件处理程序中注册您的单击处理程序(显示为​​.bs.popover或inserted.bs.popover),您将全部设置完毕。