初始化jQuery函数的确切顺序是什么?

时间:2014-04-10 09:18:34

标签: jquery

我有一个与在jQuery中应用函数的顺序相关的问题(它与我在stackoverflow上找到的其他问题有点不同)。

我有一个功能:

$(document).ready(function(){
    loading();
});

function loading() {
// some code
$('.button1').click(function(){
function(first);
});
$('.button2').click(function(){
function(second);
});
$('.button3').click(function(){
function(third);
});

function (first) {
// code to execute 1
}
function (second) {
// code to execute 2
}
function (third) {
// code to execute 3
}

我的问题是,只有来自 function(third)的代码正在执行,无论我点击哪个按钮。因此,我需要将每个代码执行功能(第三个)中以使其正常工作。我想根据点击的按钮做一些不同的操作,而且我不知道它为什么不能按照我上面提到的顺序工作。也许有人可以帮助我?

修改

这就是我的全部功能:

$(document).ready(function(){
    loading();
});

function loading() {
    if (typeof history.pushState !== "undefined") {
        var historyCount = 0;
        $('.button').click(function(){
            var getlink = $(this).attr('href');
            goTo(getlink);
            history.pushState(null, null, getlink);
            return false;
        });
        $('.projects').click(function(){
            var projects = $(this).attr('href');
            goTo(projects);
            history.pushState(null, null, projects);
            return false;
        });
        $('.home').click(function(){
            var homepage = $(this).attr('href');
            goTo(homepage);
            history.pushState(null, null, homepage);
            return false;
        });
    }
}
function goTo(homepage) {
    $.ajax({url: homepage, success: function(data) {
        $('.container_right_wrapper').hide('slide', {direction: 'left'}, 200, function(){
        $(this).html(data).show('slide', {direction: 'right'}, 200);
        $( ".pageicon img" ).remove();
        var image = $('.container_right_wrapper .img').prop('src');
        $('.pageicon').append('<img src="'+image+'"/>');
        });
    }
    });
}
function goTo(projects) {
    $.ajax({url: projects,success: function(data) {
        $('.container_right_wrapper').hide('slide', {direction: 'left',easing:'linear'}, 200, function(){
        $(this).html(data).show('slide', {direction: 'right'}, 200);
            carousel();
        $( ".pageicon img" ).remove();
        var image = $('.container_right_wrapper .img').prop('src') ;
        $('.pageicon').append('<img src="'+image+'"/>');
        });
    }
    });
}
function goTo(getlink) {
    $.ajax({url: getlink,success: function(data) {
        $('.container_right_wrapper').hide('slide', {direction: 'left'}, 300, function(){
        $(this).html(data).show('slide', {direction: 'right'}, 300);
            slider();
        $( ".pageicon img" ).remove();
        var image = $('.container_right_wrapper .img').prop('src') ;
        $('.pageicon').append('<img src="'+image+'"/>');
        });
    }
    });
}

再次:当我点击.projects时,我想要旋转木马();插件已执行,但它无法正常工作。我需要将它与slider()一起放在最后一个函数中;使它工作,我不知道为什么?对不起,伙计们,我在第一个例子中犯了一个错误,这造成了一点点破坏......

1 个答案:

答案 0 :(得分:1)

似乎你已经以错误的方式定义了你的功能,你可以这样做:

$(document).ready(function () {
    // some code
    $('.button1').click(function () {
        first();
    });
    $('.button2').click(function () {
        second();
    });
    $('.button3').click(function () {
        third();
    });

    function first() {
        // code to execute 1
    }

    function second() {
        // code to execute 2
    }

    function third() {
        // code to execute 3
    }

});