版本1:差异的javascript函数定义/ jQuery的
function add(){
var a = 2;
...
...
...
}
版本2:
$(function(){
var ...
..
..
});
两个版本的主要区别在哪里?对于版本2,它没有函数名称。如果只是简单地在函数中运行代码,为什么不去除$function(){..};
。这真的让我感到困惑,因为现在,许多脚本都是以第2版的风格编写的。请帮助澄清我的困惑。
版本1:差异的javascript函数定义/ jQuery的
function add(){
var a = 2;
...
...
...
}
版本2:
$(function(){
var ...
..
..
});
两个版本的主要区别在哪里?对于版本2,它没有函数名称。如果只是简单地在函数中运行代码,为什么不去除$function(){..};
。这真的让我感到困惑,因为现在,许多脚本都是以第2版的风格编写的。请帮助澄清我的困惑。
示例1定义了一个名为add
的函数,而示例2仅将一个匿名函数传递给jQuery函数。
$(function() {...});
语法是$(document).ready(function() {...});
的简写形式,它以函数作为参数,然后在DOM准备就绪时执行该函数。这用于确保在执行代码之前,您想要在Javascript中使用的元素确实存在。
编辑解决下面的评论:
的.click()
jQuery函数有两个用途。如果你传递一个函数,它会创建一个额外的点击事件处理程序,当事件被触发时它将运行该函数。如果你没有传递一个函数,那么它会触发所有已经附加到jQuery对象中的元素的单击事件处理程序。所以,是的,你可以打电话.click()
没有功能,但它不会做同样的事情。
你不能做到以下几点:
$(document).ready(var foo = 2;...);
,因为这会给你一个语法错误。你可以,但是,确定以通常的方式的功能,然后通过是号召,$(document).ready()
:
function foo() {
var foo = 2;
...
}
$(document).ready(foo);
实际上,如果我们替换准备好“点击”,为什么我们需要内部有一个函数?我们只需简单地运行没有函数的代码()? – red23jordan
@ red23jordan我已经更新了解决该问题的答案。 –
$(function(){})
实际上是包裹内$(document).ready()
的功能;这种方式代码将不会运行,直到加载DOM。
我相信$(function()
是jQuery文档加载的简写。
如果你想要做一个“jQuery函数”你需要做的是:
jQuery.fn.yourfunctionname = function() {
//code in here
}
因此,在短期,你的第一个函数实际上定义了一个名为add
功能和未来的功能是这个简写:
$(document).ready(function(){
function add(){
var a = 2;
...
...
...
}
是一个简单的js函数。
$(function(){
var ...
..
..
});
是jQuery Document的快捷方式。准备:
$(document).ready() {};
您可能还想问一下:
(function($){
var ...
..
..
})(jQuery);
,并在这里$
标志封闭 - 这样你就可以使用美元。 (其他库可能已被加载)。
第一个版本将函数添加到窗口命名空间,而第二个作用域仅在$(function(){...
的作用域内,因此不能从括号外的代码访问。
实施例1和2完全不同。 jQuery是JavaScript,所以函数定义是相同的。
$(function(){...
是$(document).ready(function(){...
只是简写,而例如一个实际上是产生所谓的add
新功能。
您可以在ready
函数中产生的附加功能是这样的:
$(function(){
function add(){
var foo = 1;
}
});
jQuery是不是有不同的定义和语法不是JavaScript一个seporate新的语言,它用JavaScript编写的工具包使用JavaScript语法和定义。
认为jQuery本身只是一个很大的函数,函数定义为$ ...所以而不是function add(){}
jquery只是一个名为$ function $(){}
的函数。您还可以使用与正常JavaScript函数相同的语法传递jQuery参数。
function add(arg){
//do something with arg
}
add('#elem');
function $(arg){
//do something with arg
}
$('#elem');
你看? jQuery只是一个非常复杂的函数,我们可以传递许多类型的参数,并返回许多有用的工具。但语法和定义与传统的JavaScript没有区别。
function add(arg){
var added = arg + 12;
return this.alertAdded = function(){
alert(added);
}
}
add(30).alertAdded(); // will alert 42
//vs
$('#elem').fadeOut(); // same syntax but referring to very different functionality.
这里是一个jQuery语法的例子,是普通的普通老JS。
ref:http://api.jquery.com/jQuery/ – Yoshi