2009-11-26 29 views
1

我正在閱讀David Walsh的文章creating a sprite menu with MooTools。我對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); 

回答

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

如果你把一個函數內部()的JavaScript將自動執行該功能。通過添加(document.id),他也將一個參數傳遞給該函數。例如..

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

會警惕Hello World!

+0

謝謝,那正是我一直在尋找的。 – 2009-11-26 22:02:54

1

它將匿名函數作用域的局部變量(名稱爲「$」)分配給document.id(由MooTools創建的函數)。

0

這是一個使用Mootools「美元安全模式」自動執行的關閉函數。

相關問題