我知道在jQuery中,$(callback)与jQuery(callback)相同,jQuery(callback)与$(document).ready()具有相同的效果。不如
$(callback)
jQuery(callback)
$(document).ready()
jQuery(function($) { });
有人能给我解释一下这种函数是什么意思吗?它是干什么的?这个和$(callback)有什么区别?这个和$(function())有什么区别?
$(function())
8i9zcol21#
是这三个变量中最安全的一个,它把$作为局部变量,从而避免了与其他可能使用$符号的变量的冲突。我觉得也是最近加的,不记得以前见过。这些函数都做同样的事情--在DOM准备就绪时执行一些代码。$(document).ready(function(){})是原始函数,它与底层的javascript API匹配。接受函数作为参数的“$”和“jQuery”是作为避免重复这种常见结构的快捷方式创建的。接受接受$作为第一个参数的函数是一种进一步的语法糖-现在您可以方便地使用闭包,而无需自己动手。
$
$(document).ready(function(){})
pu82cl6c2#
$()
$(document).ready(function() { ... })
$(function() { ... })
jQuery(function($) { ... })
6pp0gazn3#
当您调用jQuery工厂主函数(jQuery(<something>)或常用的快捷方式$(<something>))时,它会根据<something>的类型来决定要做什么。如果您以<something>的形式传递字符串,它会假设这是一个选择器规范,并将返回与该选择器匹配的元素的jQuery列表。如果您传递一个jQuery对象(表示一个元素列表,即从先前对jQuery的调用返回的对象),它将只返回该对象(本质上这是一个非操作)。如果向它传递一个DOM元素,它将返回一个只包含该元素的jQuery列表(这样你就可以对那个元素应用jQuery方法)这就是$(document).ready()所发生的事情--你把DOM元素“document”传递给工厂函数,它返回一个表示那个元素的jQuery对象,并使用该对象的ready()方法将事件处理函数添加到列表中所有DOM元素的ready事件中(在本例中只有document)。如果您向它传递一个函数,这只是“当一切准备就绪时运行它”的简写,因此$(function() { ... });等效于$(document).ready(function() { ... });
jQuery(<something>)
$(<something>)
<something>
document
$(function() { ... });
$(document).ready(function() { ... });
xe55xuns4#
所以我在这一点上得到了纠正,如果你读了第一篇评论,它给出了一些背景。
jQuery(function() { // Document Ready }); (function($) { // Now with more closure! })(jQuery);
我不是100%肯定,但我认为这只是把jQuery对象传递到闭包中,我会在google上做一些挖掘,看看我是对是错,并会相应地更新。编辑:我说得很对,但这是直接从他们的网站上看到的:http://docs.jquery.com/Plugins/Authoring"我熟悉和喜爱的美元符号在哪里?它还在那里,但是为了确保您的插件不会与其他可能使用美元符号的库冲突,最佳实践是将jQuery传递给一个自执行函数(闭包),该函数将jQueryMap到美元符号,这样它就不会被其执行范围内的其他库覆盖。"
nwwlzxa75#
首先,jQuery()与$(document).ready()不同$()是jQuery()的快捷方式然后...$(function(){ ...});是$(document).ready(function(){ ... });的快捷方式因此:
jQuery()
$(function(){ ...});
$(document).ready(function(){ ... });
jQuery(function(){ ... })
功能与
$(document).ready(function({ ... });
"但是..."
jQuery('#foo').css("background-color", "#f00");
不会起到与
$(document).ready('#foo').css("background-color", "#f00");
所以...jQuery()与$(document).ready()不相同
5条答案
按热度按时间8i9zcol21#
是这三个变量中最安全的一个,它把
$
作为局部变量,从而避免了与其他可能使用$
符号的变量的冲突。我觉得也是最近加的,不记得以前见过。
这些函数都做同样的事情--在DOM准备就绪时执行一些代码。
$(document).ready(function(){})
是原始函数,它与底层的javascript API匹配。接受函数作为参数的“$”和“jQuery”是作为避免重复这种常见结构的快捷方式创建的。接受接受$作为第一个参数的函数是一种进一步的语法糖-现在您可以方便地使用闭包,而无需自己动手。
pu82cl6c2#
$(function())
是语法错误。$()
创建一个空的jQuery对象。$(document).ready(function() { ... })
在DOM准备就绪时执行给定的函数$(function() { ... })
是相同内容的快捷方式jQuery(function($) { ... })
也是这样做的,但它也使$
在函数内部可用,无论它在外部设置为什么。6pp0gazn3#
当您调用jQuery工厂主函数(
jQuery(<something>)
或常用的快捷方式$(<something>)
)时,它会根据<something>
的类型来决定要做什么。如果您以
<something>
的形式传递字符串,它会假设这是一个选择器规范,并将返回与该选择器匹配的元素的jQuery列表。如果您传递一个jQuery对象(表示一个元素列表,即从先前对jQuery的调用返回的对象),它将只返回该对象(本质上这是一个非操作)。
如果向它传递一个DOM元素,它将返回一个只包含该元素的jQuery列表(这样你就可以对那个元素应用jQuery方法)这就是
$(document).ready()
所发生的事情--你把DOM元素“document”传递给工厂函数,它返回一个表示那个元素的jQuery对象,并使用该对象的ready()方法将事件处理函数添加到列表中所有DOM元素的ready事件中(在本例中只有document
)。如果您向它传递一个函数,这只是“当一切准备就绪时运行它”的简写,因此
$(function() { ... });
等效于$(document).ready(function() { ... });
xe55xuns4#
所以我在这一点上得到了纠正,如果你读了第一篇评论,它给出了一些背景。
我不是100%肯定,但我认为这只是把jQuery对象传递到闭包中,我会在google上做一些挖掘,看看我是对是错,并会相应地更新。
编辑:
我说得很对,但这是直接从他们的网站上看到的:
http://docs.jquery.com/Plugins/Authoring
"我熟悉和喜爱的美元符号在哪里?它还在那里,但是为了确保您的插件不会与其他可能使用美元符号的库冲突,最佳实践是将jQuery传递给一个自执行函数(闭包),该函数将jQueryMap到美元符号,这样它就不会被其执行范围内的其他库覆盖。"
nwwlzxa75#
首先,
jQuery()
与$(document).ready()
不同$()
是jQuery()
的快捷方式然后...
$(function(){ ...});
是$(document).ready(function(){ ... });
的快捷方式因此:
功能与
"但是..."
不会起到与
所以...
jQuery()
与$(document).ready()
不相同