参见英文答案 >
Why define an anonymous function and pass it jQuery as the argument?4个
> start javascript code with $(function,etc3
我理解如何定义这样的函数:
> start javascript code with $(function,etc3
我理解如何定义这样的函数:
function myfunc(x,y,z) { alert("Just an example " + x + y + z) }
但不是这样的:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script> (function ($) { $.fn.idle = function (x,z) { alert("Just an example " + x + y + z) }(jQuery)); </script>
以上是我正在使用的图书馆的一部分,但我根本无法理解$.fn.idle位.
它在做什么?它定义了一个名为“空闲”的功能,不知何故,但是$.fn呢?那么(function($){part?再次,我理解$(document).ready(function(){but(function($){完全是外来的)
(jQuery)的意义是什么?在底部?
解决方法
一个
immediately invoked function expression在其范围内将jQuery别名为$
(function($) {}(jQuery));
它立即创建并执行一个函数.这样,您可以使用$内的函数来引用jQuery,而不管全局$引用什么.对于使用jQuery.noConflict()的页面很有用.此外,IIFE中声明的变量也不会泄漏到全局范围.
至于问题的另一部分,$.fn === jQuery.prototype.所以通过向jQuery原型添加一个方法,你可以在任何jQuery对象上调用它.例如.:
$.fn.doSomething = function(){}; //add a method to the jQuery prototype $('selector').doSomething(); //then you may call it on any jQuery object