2009-11-26 31 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“美元安全模式”自动执行的关闭函数。

相关问题