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