Ajax Bootstrap Popover:Object#<object>没有方法'popover'</object>

时间:2012-07-08 11:52:18

标签: ajax twitter-bootstrap popover

我正在尝试构建一个Ajax Bootstrap Popover来显示包含评级星系统的页面。

这里的javascript第一次运行得很好。 然后我有这个错误:

  

未捕获TypeError:对象#没有方法'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会产生错误,因为如果删除它,错误会消失。问题:我无法删除它,因为没有它jRating不再起作用:/

6 个答案:

答案 0 :(得分: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,就可以了。

答案 1 :(得分:7)

我遇到了这个问题,因为我试图从引导程序中使用jQuery,同时还从googleapis导入jQuery (就像它在http://railscasts.com/episodes/205-unobtrusive-javascript中所说的那样) 如果你使用bootstrap,你将有jquery

答案 2 :(得分: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>

在bootstrap为我完成工作之前加载jquery。希望有所帮助

答案 3 :(得分:2)

我遇到了同样的问题。我两次加载jQuery.js ...... Narf ...

答案 4 :(得分:0)

你可以使用boostrap.js或(bootstrap-popover.js和bootstrap-tooltip.js)

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

答案 5 :(得分:0)

我猜您使用的是rails,因此可能会在assets/vendor/jquery之后加载assets/vendor/bootstrap,因为加载顺序是按字母顺序排列的。因此,您可以重命名bootstrap文件以适合正确的加载顺序。我遇到了这个问题并且它完成了这个技巧