2014-02-13 88 views
0

非常感謝您的幫助。我在這裏傾注了類似的問題,但仍然無法弄清楚。難以將我的jquery分隔成一個單獨的js文件

我有一個HTML文件,我在這裏調用了兩個函數,我將它們保存到與我的HTML文件相同的目錄中的單獨的JS中。

<script type="text/javascript" src="jquery/js/jquery-1.9.0.min.js"></script> 
    <script type="text/javascript" src="jquery/js/jquery-ui-1.10.0.custom.min.js"></script> 
    <script type="text/javascript" src="translate_game.js"></script> 
    <script type="text/javascript"> 
$(document).ready(function() { 

button_fun(); 
text_box_fun(); 

    }); 

</script> 

我的JS文件translate_game.js:

$(function() { 



     button_fun = function(){ 
      $("#basic_button").click(function(){ 
       $("#currentspanish").css("color", "yellow"); 
      }); 
     }; 


     text_box_fun = function(){ 
      $('#entry').focus(function(){ 
       $("#currentspanish").css("color", "red"); 

      }); 
     }; 

    }); 

當我刷新我的HTML,控制檯告訴我:未捕獲的ReferenceError:button_fun沒有定義

是很明顯給任何人爲什麼函數找不到?

謝謝! 丹

回答

2

你不需要用那種方式定義你的函數,只需要使用傳統的方法。有可能你的函數在你的其他函數運行的時候沒有被定義。

translate_game.js:

function button_fun(){ 
    $("#basic_button").click(function(){ 
     $("#currentspanish").css("color", "yellow"); 
    }); 
} 
function text_box_fun(){ 
    $('#entry').focus(function(){ 
     $("#currentspanish").css("color", "red"); 
    }); 
} 
+0

函數被分配給* globals *。這不是問題。 – Quentin

+0

嗯,你說得對。也許更有可能它們沒有被其他函數運行時定義。 – Jage

+0

非常感謝您回覆評論!我覺得我全都定了。 – DMBnyc

0

$(函數(){});是一種$(document).ready(function(){})的簡寫語法;

由於您只是在translate_game.js中定義函數,因此您可以刪除$(function(){})包裝器。由於這些腳本是同步加載的,因此translate_game.js中的函數將可用於您腳本標記中的document.ready回調。

如果你想保持隱私或模塊化,你可以使用revealing module pattern

此外,您應該養成使用'var'來定義變量的習慣,否則它們會變成全局的。是的,無論如何,這些將在全球範圍內,但你應該養成一個好習慣。

相關問題