2012-07-08 57 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文件以符合正確的裝入順序。我遇到過這個問題,它的確有竅門