2012-07-08 89 views
10

我试图构建一个Ajax Bootstrap Popover来显示包含评级星级系统的页面。Ajax Bootstrap Popover:对象#<Object>没有方法'popover'

JavaScript在这里工作很好第一次。 然后,我有这样的错误:

Uncaught TypeError: Object # has no method 'popover'

我不是在jQuery的真的很不错,但我想这似乎是由于Ajax调用,但我无法找到问题的所在。

$(".myRate") 
     .popover({ 
      offset: 10, 
      trigger: 'manual', 
      animate: false, 
      html: true, 
      placement: 'top', 
      template: '<div class="popover" onmouseover="$(this).mouseleave(function() {$(this).hide(); });"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' 

     }); 
$('.myRate').mouseenter(popoverDisplay); 

popoverDisplay = function() { 
var el = $(this); 
var _data = el.attr('alt'); 
$.ajax({ 
    type: 'GET', 
    url: 'notes.php', 
    data: _data, 
    cache: false, 
    dataType: 'html', 
    success: function(data) { 
     el.attr('data-content', data); 
     el.popover('show'); 
    } 
    }); 
} 

我不明白我在做什么错... 任何想法?

编辑:

搜索后,似乎,这是导致该错误的加载页面。

正是这一部分:

看来,装载jQuery的1.7.2.js做出错误,因为如果我删除它,错误disapear。问题:我不能删除它,因为没有它jRating不工作:/

+0

我能看到的一个错误就是你在定义它之前引用'popoverDisplay'。由于'popoverDisplay'不是一个悬挂函数,这会出错。但是,这似乎与您提到的问题无关。 – Utkanos 2012-07-08 12:28:57

+0

是的,我刚刚移动,这个职位的popoverDisplay函数^^' – 2012-07-08 12:49:40

+0

哪一行抛出错误 - 大概是'el.popover('show')'?这可能意味着只有两件事情中的一件,虽然它们看起来可能让你说剩下的代码正在工作:1)'el'不是一个jQuery对象; 2)'popover()'不是一个正确定义的jQuery插件(即方法) – Utkanos 2012-07-08 13:20:16

回答

23

我在运行rails twitter bootstrap生成器之后出现了这个问题,然后切换到bootstrap-sass。

这是由文件名冲突引起的,因为boostrap-sass引用了bootstrap.js而不是twitter/bootstrap,它与生成的文件冲突。

只需将生成的app/assets/javascripts/bootstrap.js.coffee重命名为其他内容,例如app/assets/javascripts/bootstrap_and_overrides.js.coffee,那么您就很好。

+0

same问题在这里。 – sebastiangeiger 2013-05-23 08:36:56

+2

这解决了它。有投票权。 :) – johnnygoodman 2013-09-16 00:05:08

+0

同样的问题与twitter引导前端与rails管理员后端碰撞。修复它谢谢你! – 2013-09-26 20:07:15

0

您可以使用boostrap.js或(自举popover.js和引导-tooltip.js)

但不两者都是因为如果你同时使用。你得到Uncaught TypeError: Object # has no method 'popover'

+0

我终于用另一种显示方式结束了,所以我不再需要这个了,但没有找到解决方法:/ – 2012-07-10 21:43:54

2

我有同样的问题。 你可能会在加载bootstrap.js后加载jquery。由于某种原因,序列很重要

</footer> 
<script src="<?php echo "http://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']."assets/bootstrap/js/jquery-1.7.1.min.js" ;?>"></script> 
<script src="<?php echo "http://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']."assets/bootstrap/js/bootstrap.js" ;?>"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    create_project_form=$('form#create_project_form'); 
    $('button#create_project_button').popover({title:'New Project',content:create_project_form}); 
}); 
</script> 
</body> 
</html> 

在引导之前加载jquery为我完成了这项工作。希望可以帮助

2

我有同样的问题。我是装的jquery.js两次... ...土著人基金

0

我猜你正在使用rails,所以它可能来了,是assets/vendor/jqueryassets/vendor/bootstrap后加载,因为加载顺序是按字母顺序排列。因此,您可以重命名bootstrap文件以符合正确的装入顺序。我遇到过这个问题,它的确有窍门