如何在外部.js文件中使用jquery?

时间:2014-03-23 21:29:31

标签: javascript jquery

在我的网站中,包含以下两个文件:index.php,script.js 当然,它在网站上要复杂得多,而上面只显示了它的一部分。

在index.php中,有一个div元素

<div id="phb29" class="drag ph hour01">Testing</div>

在script.js中,这是一个纯javascipt文件,下面显示了一个我想使用jquery函数.switchClass()(来自http://api.jqueryui.com/switchClass/)来切换div元素类的部分。

//... other normal js codes

switchClassHour = function(){

    $(function (){       
            $( "#phb29" ).switchClass( "hour01", "hour03", 1000 );
                return false;
        });     
}

//other normal js codes...

我只想在调用switchClassHour()函数时调用那个jquery但是没有加载网页(即$(document).ready(function(){...});)

我已将源包含在index.php中:

<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script type="text/javascript" src="script.js"></script>

但最后,Chrome浏览器在$(function(){当我触发switchClassHour()时出现这个错误:

Uncaught TypeError: boolean is not a function 

我该怎么办,谢谢!!!!! :):)

2 个答案:

答案 0 :(得分:0)

function switchClassHour(){
    if(document.getElementById('jq')){
        //original switchClassHour() code. 
    }
    else{
        var jq = document.createElement('script');
        jq.src = "WHATEVER SOURCE YOU WANT TO LOAD FROM (PROBABLY GOOGLE)";
        jq.id = "jq";
        document.getElementsByTagName('head').item(0).appendNode(jq);
        //Original switchClassHour() code
   }
}

我不知道这是否可以保证有效,因为我不知道你是否能够快速加载jQuery以便随后立即调用你的函数。如果这不起作用,因为jQuery加载速度不够快,那么我能看到的唯一结果就是增加延迟,但这很难看。说实话,如果您正在使用jQuery,我只会通常在您网页的<head>中从Google加载它。大多数人已经缓存​​了它。

答案 1 :(得分:0)

变量toHour似乎未在函数switchClassHour中定义。

试试这个

switchClassHour = function(){
/* `toHour` ? */
  if (window.jQuery) {
    /* $(function (){  */     
            $( "#phb29" ).switchClass( "hour01", "hour03", 1000 );
                /* `return false;` ? */
    /*    }); */
  };    
};
switchClassHour(); /* just noticed, is the function actually called ? */

修改

试试这个

   switchClassHour = function(){
    /* `toHour` ? */
      if (window.jQuery) {
        /* $(function (){  */     
                console.log($.now())
                    /* `return false;` ? */
        /*    }); */
      };    
    };
    switchClassHour();

$.now()是否在控制台返回?

非{jquery片段的其他部分是否使用$

另见https://api.jquery.com/jQuery.noConflict/

修改

试试这个

switchClassHour = function() {
  jQuery.noConflict();
    (function( $ ) {
     console.log($.now(), jQuery.now())
  })(jQuery);
};switchClassHour();

希望这有帮助