从bootstrap popover打开隐藏的div

时间:2013-10-03 11:45:53

标签: javascript jquery twitter-bootstrap

我在页面上有一个隐藏的div,需要在点击功能上打开。

可点击链接位于引导程序弹出框内,因此如何通过单击弹出链接内容链接来打开页面div。

这是 Fiddle

$( "#open" ).click(function() {
      $('.open-this').slideToggle("slow");
    });

2 个答案:

答案 0 :(得分:2)

代替此代码:

$( "#open" ).click(function() {
      $('.open-this').slideToggle("slow");
    });

试试这个

$("body").on("click","#open",function(e) {
    e.preventDefault();
      $('.open-this').slideToggle("slow");
    });

查看更新的小提琴http://jsfiddle.net/bfkLM/15/

您的代码存在的问题是,当您的事件处理程序尝试将click事件附加到其中时,链接是从您的代码生成的,而不会显示在dom中。

所以解决方案是使用委托事件: 来自官方; jquery网站

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序的需要。这个   element可以是a中视图的容器元素   例如,模型 - 视图 - 控制器设计,或者如果事件是文档   handler希望监视文档中的所有冒泡事件。该   文档元素在之前的文档头部中可用   加载任何其他HTML,因此可以安全地在那里附加事件   等待文件准备好。

这就是我的新代码可以工作的原因,因为它将事件处理程序附加到body标记并检查单击事件来自我的目标元素(open),当发生这种情况时它会触发我的代码和弹出窗口将显示

另外一件事,使用e.preventDefault();是为了防止页面导航到锚点的href属性。

答案 1 :(得分:0)

该事件未附加到链接上,因为我猜您在文档准备就绪后没有这样做。

出于测试目的,我已将onclick功能添加到链接

onclick="$(\'.open-this\').slideToggle("slow");return false;"

并且有效。

Fiddle


解决方案:

$(function(){
   $( "#open" ).click(function() {
      $('.open-this').slideToggle("slow");
      return false;
   });
});