2

我是 Zepto 的新手,我正在尝试做一些非常简单的事情,但似乎我无法尝试任何方式。我正在尝试将函数绑定到 Zepto 中的单击事件,但即使未触发该事件,该函数也会被执行......

这是我的 js 文件的内容:

$(document).ready(function() {

    if (!$('.page').hasClass('.current')) {
        $('#home').addClass('current');
        $('.page .content').css('display', 'none');
    $('#home .content').css('display', 'block');
}

$('#menu-trigger').on('click', switchPage('search', 'fade'));

function switchPage(pageID,switchType) {
    oldPageID = '#' + $('.page.current').attr('id');
    newPageID = '#' + pageID;
    if(switchType =='fade') { // Fade Effect
        // $(oldPageID).hide();
        alert('done');
    }
}
});

问题是该函数在我重新加载 html 后立即执行,而不是等待“点击”事件。

4

2 回答 2

1

区别在于指定哪个对象将用作回调,以及让函数实际执行并将该返回值指定为回调。

您的代码应为:

$('#menu-trigger').on('click', switchPage);
function switchPage(pageID,switchType) {
    oldPageID = '#' + $('.page.current').attr('id');
    newPageID = '#' + pageID;
    if(switchType =='fade') { // Fade Effect
        // $(oldPageID).hide();
        alert('done');
    }
}
于 2012-11-09T03:21:33.373 回答
0

当您只使用switchPage('search', 'fade')JS 评估函数并尝试设置它的返回值时,请改用它。

    $('#menu-trigger').on('click', function () { switchPage('search', 'fade') });

如果你使用没有参数的函数,你可以使用

    $('#menu-trigger').on('click', switchPage );
于 2012-10-16T14:32:38.283 回答