2012-07-08 18 views
10

Estoy intentando construir un Ajax Bootstrap Popover para mostrar una página que contiene un sistema de clasificación.Ajax Bootstrap Popover: Objeto # <Object> no tiene el método 'popover'

El javascript funciona bien aquí la primera vez. entonces tengo este error:

Uncaught TypeError: Object # has no method 'popover'

No soy muy bueno en jQuery, pero supongo que parece ser debido a la llamada AJAX, pero no puedo encontrar dónde está el problema.

$(".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'); 
    } 
    }); 
} 

que no entiendo lo que estoy haciendo mal ... Alguna idea?

EDIT:

Después de buscar, parece que, son las páginas cargadas que provoca este error.

Exactamente esta parte:

Parece que la carga jquery-1.7.2.js hacen el error, porque si lo quito, la disapear error. Problema: No se puede eliminar porque sin ella jRating ya no funciona:/

+0

Un error que puedo ver es que estás haciendo referencia a 'popoverDisplay' antes de definirlo. Dado que 'popoverDisplay' no es una función izada, esto generará un error. Sin embargo, esto parece un problema no relacionado con el que usted menciona. – Utkanos

+0

Sí, acabo de mudarme, la función popoverDisplay para esta publicación ^^ ' –

+0

¿Qué línea arroja el error - presumiblemente 'el.popover (' show ')'? Esto puede significar solo una de dos cosas, aunque parezcan improbables, usted dice que el resto del código está funcionando: 1) 'el' no es un objeto jQuery; 2) 'popover()' no es un plugin jQuery definido correctamente (es decir, un método) – Utkanos

Respuesta

23

Tuve este problema después de ejecutar el generador de bootsrip de Twitter de rieles, luego cambiar a bootstrap-sass.

Se originó por una colisión de nombre de archivo porque boostrap-sass hace referencia a bootstrap.js en lugar de a twitter/bootstrap, lo que entra en conflicto con el archivo generado.

Simplemente cambie el nombre de la aplicación/assets/javascripts/bootstrap.js.coffee generada a otra cosa, p. Ej., App/assets/javascripts/bootstrap_and_overrides.js.coffee, y listo.

+0

Mismo problema aquí. – sebastiangeiger

+2

Esto lo solucionó. Ten una votación positiva. :) – johnnygoodman

+0

El mismo problema con la parte delantera del bootstrap de twitter colisionando con la parte posterior del administrador de los raíles. Se corrigió gracias! –

0

Puede boostrap.js de uso o de arranque (-popover.js y de arranque-tooltip.js)

Pero no ambos porque si usas ambos. Usted obtener Uncaught TypeError: Object # has no method 'popover'

+0

Finalmente terminé con otro estilo de visualización, así que ya no necesito esto, pero no encontré la manera de arreglarlo:/ –

2

tuve el mismo problema. es posible que esté cargando jquery DESPUÉS de cargar bootstrap.js. por alguna razón, la secuencia es importante

</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> 

cargando jquery before bootstrap hizo el trabajo por mí. espero que ayude

2

Tuve el mismo problema. Estaba preparando jquery.js dos veces ... ... narf

0

supongo que está utilizando rails, por lo que podría venir de que assets/vendor/jquery se carga después assets/vendor/bootstrap, ya que el orden de carga es alfabético. Por lo tanto, puede cambiar el nombre del archivo bootstrap para que se ajuste al orden de carga correcto.Experimenté ese problema e hizo el truco

Cuestiones relacionadas