2011-12-21 21 views
26

Estoy usando el cuadro de diálogo modal Twitter bootstrap. y funciona bien mientras que sólo abrirla conbootstrap modal no es una función

<a class="btn" data-controls-modal="my-modal" >Launch Modal</a> 

Pero cuando intento algo así como

$('#close_popup').click(function(){ 
    $('#rules').modal('toggle');  
}); 

me sale un error de JavaScript:

bootstrap modal is not a function

otra parte. Por lo que entiendo, el enlace con .close debe cerrar la ventana y no lo hace. ¿Qué hago mal?

+1

¿Ha incluido el sistema de arranque-modal.js? – redGREENblue

+3

seguro que hice de lo contrario, la ventana emergente no funcionaría en absoluto –

Respuesta

62

No sé si ha descubierto este problema o no, fue hace un par de meses cuando hizo la pregunta, pero me encontré con el mismo problema y tenía que ver con un conflicto con otro complemento, entonces publicaré la solución para futuras consultas.

Aquí hay un ejemplo de lo que hice para solucionar este problema.

function ShowImageInModal(path) { 
    jQuery.noConflict(); 
    (function ($) { 
     $('#modalImage').removeAttr("src").attr("src", path); 
     $('#myModal').modal('show'); 
    } 
    )(jQuery); 
} 
+10

+1 en esto. Todo lo que necesitaba agregar era * jQuery.noConflict() * antes de * $ ('# myModal'). Modal ('show') * Gracias. – conor

+0

puede confirmar con @conor; jQuery.noConflict() antes de la llamada a .modal ('show') corrigió el problema tanto en Chrome como en Firefox y eliminó una fea solución – nyusternie

+0

@Etch Muchas gracias, agregando JQuery.noConflict() antes de que la línea me funcionara también. –

0
$('#rules').modal('toggle'); 

¿Es 'rules' la id de su modal? porque podemos usar métodos .modal solo con el div que tiene la clase 'modal'.

y teniendo en cuenta que

<a class="btn" data-controls-modal="my-modal" >Launch Modal</a> 

esto está funcionando bien y en este hay que utilizar el ID 'mi-modal para el modal.

11

probablemente un conflicto de espacio de nombres, sólo tiene que hacer esto ...

jQuery(document).ready(function($) { 
    $('#myModal').modal('toggle'); 
}); 
1

Asegúrese de que no va a cargar varios archivos de jQuery desde múltiples ubicaciones, local o remoto.

0

que resuelven este problema quitando el siguiente código:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
       <h4 class="modal-title" id="myModalLabel">Feed Selection</h4> 
      </div> 
      <div class="modal-body"> 
      </div> 
      <div class="modal-footer"> 
       <!-- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> --> 
       <button type="button" id="feedsave" class="btn btn-primary">Save changes</button> 
      </div> 
     </div> 
    </div> 
</div> 

Lo que significa bootbox alguna manera entra en conflicto con la ventana emergente modal de arranque.

1

Añadir jQuery.noConflict() dentro de $(document).ready(function(){}) puede estar ayudando también.

$(document).ready(function(){ 
    jQuery.noConflict(); 
});