2012-06-27 10 views
14

Ho incluso il codice di esempio da twitter-bootstrap per una finestra modale. Se clicco sul pulsante si apre la finestra modale. Tuttavia, se cerco di mostrare la finestra modale attraverso javascript ottengo il seguente errore -impossibile chiamare la finestra modale bootstrap utilizzando javascript in chrome (funziona in firefox)

$("#myModal").modal("show") 

TypeError: Object [object Object] has no method 'modal' 

Questo errore è solo in arrivo in cromo e lavora a firefox.

Di seguito è riportato l'HTML. "project-add-modal" è l'id della casella modale. Passare a Progetto -> Aggiungi per vedere il pulsante modale. -

<html class=" js flexbox canvas canvastext no-webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms no-csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths" lang="en"><!--<![endif]--><head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

    <title>Project Management</title> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <meta name="viewport" content="width=device-width"> 

    <link rel="stylesheet" href="css/style.css"> 
     <link rel="stylesheet" href="css/bootstrap.min.css"> 
     <link rel="stylesheet" href="css/bootstrap-responsive.min.css"> 

     <link rel="stylesheet" href="css/docs.css"> 

    <script src="//www.google-analytics.com/ga.js"></script><script src="js/libs/modernizr-2.5.3.min.js"></script> 
</head> 
<body class=""> 
<div id="header"><div id="top-navbar"> 
     <div class="navbar navbar-fixed-top"> 
     <div class="navbar-inner"> 
      <div class="container"> 
      <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </a> 
      <div class="nav-collapse"> 
       <ul data-navlinks="left" class="nav"> 
       <li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Projects<b class="caret"></b></a> 
        <ul class="dropdown-menu"> 
        <li><a href="#" id="add-new-project" bind="click: pm.client.templating.hello"> 
         Add 
        </a></li> 
        </ul> 
       </li> 
       <li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Admin<b class="caret"></b></a> 
        <ul class="dropdown-menu"> 
        <li><a href="#">Invite Users</a></li> 
        </ul> 
       </li> 
       </ul> 
       <ul class="nav pull-right"> 
       <li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Username<b class="caret"></b></a> 
        <ul class="dropdown-menu"> 
        <li><a href="#">Logout</a></li> 
        </ul> 
       </li> 
       </ul> 
      </div><!-- /.nav-collapse --> 
      </div> 
     </div><!-- /navbar-inner --> 
     </div> 
    </div></div> 
<div class="container cljs-main"><div id="project-add-section"> 
<a class="btn" data-toggle="modal" href="#project-add-modal">Launch Modal</a> 

     <div class="modal hide fade" id="project-add-modal" style="display: none; "> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal">×</button> 
      <h3>Add New Project</h3> 
     </div> 
     <div class="modal-body"> 
      <form class="form-horizontal"> 
      <fieldset> 
       <div class="control-group"> 
       <label class="control-label" for="input01">Project Name</label> 
       <div class="controls"> 
        <input type="text" class="input-xlarge" id="project-name"> 
       </div> 
       </div> 
       <div class="control-group"> 
       <label class="control-label" for="textarea">Project Description</label> 
       <div class="controls"> 
        <textarea class="input-xlarge" id="project-desc" rows="3"></textarea> 
       </div> 
       </div> 
       <label class="control-label">Invite People to 
       collaborate on your project</label> 
       <div class="control-group"> 
       <label class="control-label" for="prependedInput"></label> 
       <div class="controls"> 
        <div class="input-prepend"> 
        <span class="add-on">@</span><input class="span2" id="prependedInput" size="16" type="text"> 
        </div> 
        <p class="help-block">Here's some help text</p> 
       </div> 
       </div> 
      </fieldset> 
     </form></div> 
     <div class="modal-footer"> 
      <a href="#" class="btn" data-dismiss="modal">Close</a> 
      <a href="#" class="btn btn-primary">Save changes</a> 
     </div> 
     </div> 

    </div></div> 
<footer> 

</footer> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"><\/script>')</script> 

<!-- scripts concatenated and minified via ant build script--> 
<script src="js/bootstrap.min.js"></script> 
<script src="js/plugins.js"></script> 
<script src="js/script.js"></script> 
<script src="cljs/client.js"></script><script type="text/javascript" src="deps.js"></script> 
<script>$(function() {cljsbinding.boot()})</script> 
<!-- end scripts--> 


<script> 
    var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]; 
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; 
    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js'; 
    s.parentNode.insertBefore(g,s)}(document,'script')); 
</script> 




<iframe name="xpcpeer7X7y" id="xpcpeer7X7y" style="display: none; " src="http://localhost:9000/repl?xpc=%7B%22cn%22%3A%22PmCIncJdVC%22%2C%22tp%22%3Anull%7D"></iframe></body></html> 

Grazie, Murtaza

+0

Puoi pubblicare l'html del tuo modal? E dove stai chiamando questo metodo? Il bootstrap js è caricato? – periklis

+0

Sto provando a chiamare il metodo dalla console di chrom, dopo che tutto è stato caricato. – murtaza52

+1

Immagino tu voglia dire che stai facendo $ ('# project-add-modal'). Modal ("show") e non $ ("# myModal"). Modal ("show") (poiché myModal non esiste nel tuo codice sopra) – periklis

risposta

50

ho notato questo problema può verificarsi in presenza delle seguenti condizioni:

  • JQuery è stato caricato due volte.
  • Il plugin individuale Twitter bootstrap viene caricato sulla parte superiore del bootstrap.js
  • I file .js sono inclusi nell'ordine sbagliato
  • il tipo sbagliato viene inviato alla funzione.
+0

In quale ordine devo includere i file js. Se collego il file jquery dopo il file bootstrap.js, il menu a discesa di bootstrap non funzionerà. Attualmente jquery viene posizionato prima del file bootstrap.js. – murtaza52

+0

Ho riscontrato un problema simile con il menu a discesa. Avevo incluso sia bootstrap.js che bootstrap-dropdown.js, mentre il secondo è già incluso nel primo. – Dieter

+0

a quale ordine di caricamento sei arrivato? – jbnunn

2

Assicurarsi che si sta facendo

$('#project-add-modal').modal("show") 

e non

$("#myModal").modal("show") 

(dal myModal non esiste nel codice sopra)

+0

Sì, questo è quello che sto facendo. – murtaza52

1

FWW ho avuto un problema simile ed era dovuto al fatto che stavo usando JQuery 1.8.x con Bootrap 2.0.x. L'aggiornamento a Bootstrap 2.1.x ha salvato il giorno.

Problemi correlati