2012-07-03 28 views
9

Estoy usando Twitter Bootstrap y parece que no puedo obtener los estados de los botones para cambiar.Botón Twitter Bootstrap js no funciona

Estoy copiando el js de http://jsfiddle.net/YCst4/1/ y no estoy obteniendo una respuesta. Es como si no hubiera cargado jQuery, pero tengo bootstrap.min.js cargado en mi encabezado. No tengo ningún problema con otros javascript en la página.

Esto es lo que tengo en mi opinión CodeIgniter:

<script> 
$('#button').button(); 

$('#button').click(function() { 
    $(this).button('loading'); 
}); 
</script> 

<button class="btn" id="button" type="button" data-text-loading="Loading...">Press Me</button> 

¿Alguna idea sobre lo que está causando esto? ¿bootstrap-button.js no forma parte de bootstrap.min.js que viene con Bootstrap?

http://twitter.github.com/bootstrap/javascript.html#buttons

EDIT:

Cuando veo-fuente de la página, puedo ver los bootstrap.min.js cargados en la vista de cabecera y, puedo hacer clic en él para ver su fuente, por lo el camino es correcto Sin embargo, el código del botón js solo funciona cuando repito <script src="http://site.dev/assets/admin/js/bootstrap.min.js"></script> en la propia vista de contenido.

Tengo jQuery cargó una línea por encima de bootstrap.min.js y los elementos jQuery en la misma vista que el botón funcionan perfectamente. Estoy perplejo.

Respuesta

14

Tenía jquery-ui-1.8.21.custom.min.js cargando después de bootstrap.min.js. Aparentemente hay un conflicto

+1

El problema real es bootstrap.js requiere jQuery. Hay código jQuery en bootstrap.js, por eso es necesario importar primero jquery. No tiene nada que ver con los conflictos. –

2

Está intentando vincular un clic al botón antes de que el botón forme parte del DOM. Coloque sus cosas en la función de listo para documentos y debería estar bien.

9

Necesita poner el código en una función lista para documentos para que se ejecute después de que la página esté lista, no antes.

$(document).ready(function(){ 
    $('#button').button(); 

    $('#button').click(function() { 
    $(this).button('loading'); 
    }); 
}); 

JS Fiddle parece hacer esto automáticamente para usted, por lo que funciona allí.

+0

Todavía no hay suerte:/puse exactamente lo que escribió junto con el botón en una vista con nada más, y su estado no cambia. – Motive

+0

No tengo experiencia con el encendedor de código, pero confirmaría que el javascript se está ejecutando efectivamente y que está vinculando el botón con éxito. –

+0

"Es como si no hubiera cargado jQuery, pero tengo bootstrap.min.js cargado en mi encabezado". Estoy confundido, ¿tienes JQuery cargado? Tienes que cargarlo por separado desde bootstrap.min.js, que solo carga los complementos de arranque –

0

Tuve el mismo problema recientemente. Aquí hay algunas cosas que pueden ayudarlo:

  1. ¿Está cargando sus archivos js en el orden necesario? El orden de la lista (como etiquetas de script) debe estar en el orden correcto (basada en la dependencia), así:

    <script src="jquery.js"></script> 
    <script src="bootstrap.js"></script> 
    <script src="button_app.js."></script> 
    
  2. ¿Está utilizando archivos locales o remotos css/js? Si está usando los remotos. Verifique si alguno de ellos hace referencia a github. Si se ven así:

    <script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-alert.js"></script> 
    

    no funcionarán. Chrome lanzará un error tipo mime.

2

Para javascript novatos como yo: también tiene que cargar jQuery antes se define $('#button').click()

Cuestiones relacionadas