难以将我的Jquery分成单独的js文件

时间:2014-02-13 16:35:17

标签: javascript jquery html

提前感谢您的帮助。我在这里倾注了类似的问题,但仍然无法理解。

我有一个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 个答案:

答案 0 :(得分: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");
    });
}

答案 1 :(得分:0)

$(函数(){});是$(document).ready(function(){});

的一种简写语法

由于您只是在translate_game.js中定义函数,因此可以删除$(function(){})包装器。由于这些脚本是同步加载的,因此translate_game.js中的函数将可用于脚本标记中的document.ready回调。

如果您想保持隐私或模块化,可以使用revealing module pattern

此外,您应养成使用'var'定义变量的习惯,否则它们会变为全局变量。是的,无论如何,这些都将在全球范围内,但你应养成一个好习惯。