这是你如何在jQuery中定义一个函数?

这是你如何在jQuery中定义一个函数?

$(document).ready( function () { var MyBlah = function($blah) { alert($blah); }; }); 

现在来调用我做的function:

 MyBlah('hello'); 

首先,你的代码可以工作,这是一种在JavaScript中创build函数的有效方式(不包括jQuery),但是因为你在另外一个函数中声明了一个函数(在这种情况下是匿名的),“MyBlah”将不能从全球范围。

这是一个例子:

 $(document).ready( function () { var MyBlah = function($blah) { alert($blah); }; MyBlah("Hello this works") // Inside the anonymous function we are cool. }); MyBlah("Oops") //This throws a JavaScript error (MyBlah is not a function) 

由于我们不会污染全局名称空间 ,因此这是(有时)一个理想的行为,所以如果你的函数不需要从你的代码的其他部分调用,这是要走的路。

在匿名函数之外声明它放在全局名称空间中,并且可以从任何地方访问它。

最后,variables名开头的$是不需要的,当variables是jQuery对象本身的一个实例(不一定在这种情况下)时,有时用作jQuery约定。

也许你需要创build一个jQuery插件 ,这是非常非常简单和有用的,因为它可以让你做这样的事情:

 $('div#message').myBlah("hello") 

不,你可以把这个函数写成:

 $(document).ready(function() { MyBlah("hello"); }); function MyBlah(blah) { alert(blah); } 

这在内容准备上调用MyBlah函数。

没有。

你定义的函数完全一样的方式,你会在常规的JavaScript。

 //document ready $(function(){ myBlah(); }) var myBlah = function(blah){ alert(blah); } 

另外:没有必要的$

您可以扩展jQuery原型,并使用您的函数作为jQuery方法。

 (function($) { $.fn.MyBlah = function(blah) { $(this).addClass(blah); console.log('blah class added'); }; })(jQuery); jQuery(document).ready(function($) { $('#blahElementId').MyBlah('newClass'); }); 

有关在此扩展jQuery原型的更多信息: http : //api.jquery.com/jquery.fn.extend/

 jQuery.fn.extend({ zigzag: function () { var text = $(this).text(); var zigzagText = ''; var toggle = true; //lower/uppper toggle $.each(text, function(i, nome) { zigzagText += (toggle) ? nome.toUpperCase() : nome.toLowerCase(); toggle = (toggle) ? false : true; }); return zigzagText; } }); 

这就是你如何定义一个匿名函数,当文档准备好时被调用。