Ajax Bootstrap Popover: Object # <Object> не имеет метода 'popover'

Я пытаюсь создать Ajax Bootstrap Popover, чтобы отобразить страницу, содержащую рейтинговую звездную систему.

Javascript здесь работает хорошо в первый раз. Тогда у меня есть эта ошибка:

Uncaught 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');
     }
  });
}

Я не понимаю, что я делаю неправильно... Любая идея?

EDIT:

После поиска, кажется, что это загруженные страницы, которые вызывают эту ошибку.

Именно эта часть:

Кажется, что загрузка jquery-1.7.2.js вызывает ошибку, потому что если я удалю ее, ошибка исчезнет. Проблема: я не могу удалить его, потому что без него jRating больше не работает:/

Ответ 1

У меня возникла эта проблема после запуска генератора бутстрапов raits twitter, а затем перехода на bootstrap-sass.

Это было вызвано столкновением имен файлов, поскольку boostrap-sass ссылается на bootstrap.js вместо twitter/bootstrap, который сталкивается с сгенерированным файлом.

Просто переименуйте сгенерированное приложение /assets/javascripts/bootstrap.js.coffee на что-то другое, например app/assets/javascripts/bootstrap_and_overrides.js.coffee, и вам хорошо идти.

Ответ 2

У меня была эта проблема, потому что я пытался использовать jQuery из bootstrap, а также импортировал jQuery из googleapis (как говорится в http://railscasts.com/episodes/205-unobtrusive-javascript) если вы используете bootstrap, у вас будет jquery

Ответ 3

У меня была та же проблема. вы можете загрузить jquery ПОСЛЕ загрузки bootstrap.js. по какой-то причине важна последовательность

</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 перед загрузкой выполняла эту работу для меня. надеюсь, что помогает

Ответ 4

У меня была та же проблема. Я дважды загружал jQuery.js... Narf...

Ответ 5

Вы можете использовать boostrap.js или (bootstrap-popover.js и bootstrap-tooltip.js)

Но не потому, что если вы используете оба. Вы получаете Uncaught TypeError: Object # has no method 'popover'

Ответ 6

Я предполагаю, что вы используете rails, поэтому может получиться, что assets/vendor/jquery загружается после assets/vendor/bootstrap, потому что порядок загрузки по алфавиту. Таким образом, вы можете переименовать файл bootstrap, чтобы он соответствовал правильному порядку загрузки. Я испытал эту проблему, и она сделала трюк