在jQuery中设置init函数

use*_*811 11 jquery

这里只是一个简单的问题,我想知道如何将它们设置为init()函数,然后在document.ready上运行该函数.此代码正在单独的main.js文件中使用.是否需要从索引页面调用?

$('#main_right_line_one').click(function(){
    $('#main_regular_layover, #main_deep_layover').fadeOut('slow', function(){
        $('#main_light_layover').fadeIn('slow');
    });
});

$('#main_right_line_two').click(function(){    
    $('#main_light_layover, #main_deep_layover').fadeOut('slow', function(){
        $('#main_regular_layover').fadeIn('slow');
    });
});

$('#main_right_line_three').click(function(){
    $('#main_light_layover, #main_regular_layover').fadeOut('slow', function(){
        $('#main_deep_layover').fadeIn('slow');
    });
});
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.我真的试图绕过这个,但我似乎找不到任何好的教程来解释init()足够我的特定代码.

Ant*_*ala 32

不需要特殊的"调用",将它包含在页面上<script src="yourfile.js"></script>,只需将代码包装在下面,以确保在dom准备好后(和元素存在)执行它.

$(function () {
   // your code goes here

});
Run Code Online (Sandbox Code Playgroud)

$( a_function )是的$(document).ready( a_function ); 更多关于文档中的现成处理程序.


完全需要$(document).ready(...)/ 的原因$(...)是jquery选择$('#main_right_line_one')只能看到DOM树中执行时出现的元素.但是,<script>标签内容通常在浏览器满足后立即执行; 和<script>元素通常位于<head>.因此,脚本经常会看到不完整的DOM树.现在,由于jQuery的设计,即使$('#main_right_line_one')不匹配任何元素,仍然没有错误; 并且click处理程序将绑定到0个元素.

通过将这种代码包装$(function() { ... })在一起可以避免这一切,这可以确保在完全初始化DOM之后执行其中的任何代码(或者如果它已经被初始化,则立即执行).


原因为什么有像速记$(function() {})$(document).ready(function() {})是,执行DOM树已经完成后才代码是,几乎每一个单页使用jQuery的会使用这样的必要方式.

  • 并且,要清楚,上面的内容与`$(document).ready(function(){``// your code goes here``});`相同. (3认同)

Sim*_*ock 23

在您的索引页面中:

<html>
<head>
    <title>Your title</title>
</head>
<body>

    <!-- Your HTML here -->

    <script src="http://code.jquery.com/jquery-2.0.0.js"></script>
    <script src="main.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

你是对的,将所有代码包装在一个对象中并用init()函数调用它是一种好习惯.所以在你身上main.js,你可以:

$(document).ready(function() {

    myPage.init();

});
Run Code Online (Sandbox Code Playgroud)

然后在下面,您可以像这样定义页面对象:

var myPage = (function() {

    var that = {};

    that.init = function () {

        $('#main_right_line_one').click(function(){
            $('#main_regular_layover, #main_deep_layover').fadeOut('slow', function(){
                $('#main_light_layover').fadeIn('slow');
            });
        });

        $('#main_right_line_two').click(function(){    
            $('#main_light_layover, #main_deep_layover').fadeOut('slow', function(){
                $('#main_regular_layover').fadeIn('slow');
            });
        });

        $('#main_right_line_three').click(function(){
            $('#main_light_layover, #main_regular_layover').fadeOut('slow', function(){
                $('#main_deep_layover').fadeIn('slow');
            });
        });

    }

    return that;

})();
Run Code Online (Sandbox Code Playgroud)