質問

MooToolsでスプライトメニューを作成するDavid Walshの投稿を読んでいました。私はMooToolsにかなり慣れていないので、彼がスクリプトを開く方法を理解していませんでした。特に、何ですか

(function($){
..
})(document.id)

JSクロージャーの一種ですか?

リンクをたくない場合の完全なスクリプトは次のとおりです。

(function($) {
    window.addEvent('domready',function() {
    $('nav').getElements('li').each(function(li) {
        //settings
        var link = li.getFirst('a');
        //fix background image
        if(!li.hasClass('current')) {
            link.setStyle('background-image','none');
        }
        //utility div
        var div = new Element('div',{
            'class': 'nav-' + li.get('id'),
            opacity: 0
        }).inject(li);
        //background imagery
        li.addEvents({
            mouseenter: function() {
                div.fade('in');
            },
            mouseleave: function() {
                div.fade('out');
            },
            mousedown: function() {
                div.addClass('nav-' + li.get('id') + '-click');
            },
            mouseup: function() {
                div.removeClass('nav-' + li.get('id') + '-click');
            }
        });
    });
});
})(document.id);
役に立ちましたか?

解決

(function($){
..
})(document.id)

()内に関数を配置すると、JavaScriptはその関数を自動的に実行します。 (document.id)を追加することにより、彼はその関数にパラメーターも渡します。たとえば..

(function(message){
    alert(message);
})( 'Hello World!' );

Hello Worldに警告します!

他のヒント

document.id (MooToolsによって作成された関数)を匿名関数のスコープのローカル変数(" $"という名前)に割り当てます。

これは、Mootools" dollar safe mode"を使用した自動実行のクローズド関数です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top