2010-01-17 47 views
4

我正在将SharePoint Server 2007 Enterprise与Windows Server 2008 Enterprise配合使用。我正在开发使用VSTS 2008 + C#+ .Net 3.5 + ASP.Net。我正在学习下面的代码处理javascript,我的困惑是$(function(){...}的一部分代码,当它将被调用,它的功能是什么?我没有看到任何代码调用此函数。

<!doctype html> 
<html lang="en"> 
<head> 
    <title>Test</title> 
    <link type="text/css" href="tabcontrol/themes/base/ui.all.css" rel="stylesheet" /> 
    <script type="text/javascript" src="tabcontrol/jquery-1.3.2.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#tabs").tabs(); 
     }); 
    </script> 
</head> 
<body> 

<div class="demo"> 

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">tab1</a></li> 
     <li><a href="#tabs-2">tab2</a></li> 
    </ul> 
    <div id="tabs-1"> 
     <p>tab1 info</p> 
    </div> 
    <div id="tabs-2"> 
     <p>tab2 info</p> 
    </div> 
</div> 

</div> 

</body> 
</html> 

由于事先 乔治

回答

9

它来自jQuery库你包括:

<script type="text/javascript" src="tabcontrol/jquery-1.3.2.js"></script> 

$是为jQuery函数的别名。

jQuery(callback) reference documentation

$(document).ready()速记。

允许您绑定要在DOM文档加载完成时执行的函数。该函数的行为与$(document).ready()类似,因为它应该用于在您的页面上打包其他$()操作,这些操作取决于DOM已准备好进行操作。虽然这个功能在技术上是可链接的,但实际上并没有多大用处。

欲了解更多信息,看看Tutorials:Introducing $(document).ready()

+0

我想知道准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)?所以,如果页面中的webpart需要这个javascript函数,那么我可以将这个函数添加到页面的头部? – George2 2010-01-17 13:25:47

+0

1.文档准备好会在webpart加载之前发生吗? 2。目前,我在我的问题中显示的所有代码都位于一个单独的aspx页面中。现在,我想将所有剩余的html代码移动到一个web部件中,并希望保持aspx页面的头部相同,但不确定它是否有效? – George2 2010-01-17 13:35:31

+2

请参阅http://docs.jquery.com/Tutorials:Introducing_$(document).ready()获取更多信息 – 2010-01-17 14:11:35

6

它将被称为当the document is ready它等效于:。

$(document).ready(function() { 
    ... 
}); 

的document.ready表示该页面完全加载在客户端上的WebParts是服务器端控件,而且是我首先要处理的是为了生成发送给客户端的html文档。因此webparts将在document.ready客户端事件触发前处理。

the Gecko docs

在文档 加载过程的结束

负载事件触发。此时, 文档中的所有对象都在 DOM中,并且所有图像和子帧 都已完成加载。

+0

准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)? – George2 2010-01-17 13:07:08

+2

不知道'web部件'是什么,但是'$(document).ready()'基本上意味着DOM(通过JavaScript访问HTML元素)已准备好,但并不是所有的图像和其他外部资源都被加载。 – 2010-01-17 13:12:07

+0

WebPart我的意思是ASP.Net webpart。 – George2 2010-01-17 13:16:27

1

这是一个jQuery调用,当一个文件被加载它被调用。在http://docs.jquery.com/Core/jQuery#callback

+0

我想知道准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)? – George2 2010-01-17 13:15:48

+1

您可以有多个$(function(){})语句。您甚至可以将其添加到Web部件。浏览器将在浏览器加载页面时触发所有语句。浏览器不知道Web部件。一个页面是他的页面,jQuery文档就绪函数是一个客户端功能,因此,如果您有Web部件或没有,则无关紧要。页面是浏览器的页面。 – dmonlord 2010-01-17 13:20:06

+0

那么,如果一个页面中的webpart需要这个javascript函数,那么我可以将这个函数添加到页面的头部? – George2 2010-01-17 13:24:55

2
$(function(){ 

}); 

更多信息是jQuery(一个JavaScript库)的简写:

$(document).ready(function(){ 

}); 

这是您使用<body onload="xxx">但更复杂的事。你可以得到一个更全面的解释here

+0

我想知道准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)? – George2 2010-01-17 13:14:45

+0

1.文档准备好会在webpart加载之前发生吗? 2.目前,我在我的问题中显示的所有代码都位于单个aspx页面中。现在,我想将所有剩余的html代码移动到一个web部件中,并希望保持aspx页面的头部相同,但不确定它是否有效? – George2 2010-01-17 13:30:08

+1

错误的jquery,他们的URL不编码'http://docs.jquery.com/Tutorials:Introducing_$(document).ready()' – 2010-01-17 14:45:00

1

这句法是

$(document).ready(function(){}); 

别名jQuery中使用此事件,尽快调用脚本作为DOM已准备就绪。这就像window.onload,但不会等待所有图像在发射前完全加载。

+0

我想知道准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)? – George2 2010-01-17 13:15:15

+0

1.文档准备好会在webpart加载之前发生吗? 2.目前,我在我的问题中显示的所有代码都位于单个aspx页面中。现在,我想将所有剩余的html代码移动到一个web部件中,并希望保持aspx页面的头部相同,但不确定它是否有效? – George2 2010-01-17 13:42:29

+1

它与ASP分开,因此,页面如何放在一起服务器端并不重要。你的服务器一次输出所有的HTML,对吗?只要浏览器将其解析为DOM树,jQuery就会检测到'ready'部分上的代码可以被执行。 – JAL 2010-01-17 13:53:43

2

这是一个在jQuery中使用的简写以及在我看来绝对不清楚和不必要的简写。不久前,我们曾经写:

$(document).ready(function() { 
    $("#tabs").tabs(); 
}); 

现在,我们也可以这样写尽述:

$(function() { 
    $("#tabs").tabs(); 
}); 

传递给$函数(文件)。就绪时执行该页面已加载并且DOM已准备就绪,换句话说,文档已加载到内存中。此代码是用jQuery写成的,它使DOM操作更容易。

这是上面的代码是如何转化为普通的JavaScript:

window.onload = function() { 
    $("#tabs").tabs(); 
}; 

其中window是一个全局对象,表示当然window的页面。

+0

我想知道准确的文件意味着什么?我正在设计带有Web部件的页面,并且我不确定Web部件准备好了什么文档(例如,在加载所有Web部件之前加载文档)? – George2 2010-01-17 13:23:52

+0

1.文档准备好会在webpart加载之前发生吗? 2.目前,我在我的问题中显示的所有代码都位于单个aspx页面中。现在,我想将所有剩余的html代码移动到一个web部件中,并希望保持aspx页面的头部相同,但不确定它是否有效? – George2 2010-01-17 13:36:13

+1

上面的代码不会转换为您发布的普通JS。它将你的函数添加到队列中,并顺序地调用每个函数。如果它符合你的建议,那么随后的'document.ready'调用将覆盖以前的调用。 – nickf 2010-01-20 03:20:56

2

我不确定为什么您将帖子标记为“SharePoint”,但请注意,这不会在SharePoint网页上得到支持。 您需要将在页面加载时运行的脚本推送到堆栈上,SharePoint将执行它们。语法是:

_spBodyOnLoadFunctionNames.push("myOnloadFunction"); 

这将需要的JavaScript复:

function myOnloadFunction() 
{ 
    $("#tabs").tabs(); 
} 

可用,可以执行你的onload事件代码。

+0

+1有没有关于这个和其他方法的SharePoint JS的任何文档/ API?我似乎无法通过搜索找到。 – 2012-02-11 14:43:39

相关问题