这是你如何在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; } });
这就是你如何定义一个匿名函数,当文档准备好时被调用。
- 用ES6语法和Babel扩展Javascript的错误
- 如何在JavaScript中初始化数组的长度?
- document.getElementById(id).focus()不适用于Firefox或Chrome
- 面向对象的JavaScript与原型vs闭包
- 我怎样才能得到完整的对象Node.js的console.log(),而不是“”?
- 使用JQuery检测对<input type =“text”>(立即)的所有更改
- Websockets客户端API中的HTTP头
- JavaScript / JQuery:$(window).resize如何在resize完成后触发?
- 单击后退button时是否存在跨浏览器onload事件?