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 に答える