我有几个面试问题
$(function(){});
和$(document).ready(function(){});
$(function(){});
和var func=function(){};
之间的区别是如何调用它们的?
给出以下脚本
<script language="javascript">
$(function()
{
var id=$("cssID");
//do something with your id
//your event to be added here
});
</script>
如何添加可在onmouseout
上使用的id
事件?
以下是我的答案:
它们是相同的,两者都是在页面文档完成加载时运行
第一个被自动调用,而第二个将通过命名引用调用;例如,func.called()
。
这样的事情:
$(function()
{
var id=$("cssID");
//do something with your id
//Oki
id.onmouseout
(function(){
//do something
});
});
但是我的教授说我三个人都错了。她解释了我不确定但不敢问的事情,她对我很生气。什么是正确的答案,为什么我错了?
答案 0 :(得分:1)
这些是jQuery(又名jQuery DOM Ready)中常用的不同类型的Document Ready函数。许多开发人员似乎在不知道原因的情况下使用它们。所以我将尝试解释为什么你可以选择一个版本而不是另一个版本。将文档就绪函数看作是一个自动执行的函数,它在页面元素加载后触发。
有关如何使用文档就绪功能的详细信息,请参阅Where to Declare Your jQuery Functions。
文档就绪示例1
$(document).ready(function() {
//do jQuery stuff when DOM is ready
});
文档就绪示例2
$(function(){
//jQuery code here
});
这相当于示例1 ......它们的字面意思相同。
文档就绪示例3
jQuery(document).ready(function($) {
//do jQuery stuff when DOM is ready
});
文档就绪示例4
(function($) {
// code using $ as alias to jQuery
$(function() {
// more code using $ as alias to jQuery
});
})(jQuery);
// other code using $ as an alias to the other library
文档就绪示例5
$(window).load(function(){
//initialize after images are loaded
});
Here 是您可以参考的链接。
答案 1 :(得分:0)
之间没有区别:
$(functionValue);
和
$(document).ready(functionValue);
所以你的教授在那里错了。第二个例子完全不同。其中一个在文档就绪上运行并需要jQuery;另一个只是一个分配给JavaScript变量的函数文字。
至于第三个,你可能会用on
来做。如果您使用onmouseover
,get
是正确的,但实际上并不是处理事情的最佳方式,而肯定不会像在那里那样称呼它 - 那就是完全不正确。
id.on('mouseout', yourHandler);
或
id.mouseout(yourHandler);
答案 2 :(得分:0)
1。它们是相同的,两者都是在页面文档完成加载时运行
这是对的一半。它们是相同,第一种只是写第二种的快捷方式,但它们在文档完成加载时不运行,它们在DOM准备好时运行(此时某些资源如此因为图像可能仍在加载。)
2。第一个是自动调用的,而第二个是通过命名引用调用的;例如,
func.called()
。
再来一半。在第一个中,当DOM根据问题1准备好时,将自动调用匿名函数。可以使用func()
调用第二个示例。你不会在那里有.called
部分。或者,您可以将func
作为参数传递,例如$(document).ready(func)
。
Q3
var id=$("cssID");
如何添加可在
onmouseout
上使用的id
事件?
$("cssID")
创建一个jQuery对象,该对象将包含零个或多个元素,具体取决于"cssID"
选择器匹配的数量。 id
变量引用了jQuery对象。如果问题是如何为这些匹配的元素分配事件处理程序,那么你可以这样做:
id.mouseout(function() { /* some code */. });
// OR
id.on("mouseout", function() { /* some code */ });
使用jQuery处理事件时,不要在事件名称中使用“on”,因此它的“mouseout”不是“onmouseout”。
所以你对3的答案几乎正确。
(请注意,"cssID"
是一个实际上不会与任何元素匹配的选择器,除非您的文档中有<cssID>
个标记...)