我正在尝试构建一个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不再起作用:/
答案 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)
</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
文件以适合正确的加载顺序。我遇到了这个问题并且它完成了这个技巧