2013-04-23 72 views
0

我会安全地从document.ready()块中移出这段代码。我是否安全地在“document.ready()”块之外执行此操作?

var $userInfoNode = $('#userOptions'); 
CURR_USER_ID = $userInfoNode.attr('data-userId'); 
CURR_USER_NAME = $userInfoNode.text(); 

此代码被放置在从& HTML网页的head部加载外部JS文件选择置于HTML body内的html元素,从那里提取数据。

+1

只有在编码的元素存在后才放入文档中。将文档保存在文档中有什么不妥? – j08691 2013-04-23 16:23:38

+0

如果放置在库(本例中为jquery)之后,并且它引用的元素或$('#userOptions')将返回undefined之后,将只能用于docready。 – RaphaelDDL 2013-04-23 16:27:27

回答

3

简短回答:不,因为JavaScript文件放在标题中。

执行代码时,DOM(文档对象模型)需要包含<div id="userOptions">

您可以在之后div之后放置代码,例如在关闭</body>之前。

或者您将代码放入$(document).ready()函数中,该函数在DOM完全加载后立即触发。

+0

OP说:“这段代码被放置在一个从'head'部分加载的外部js文件中” – Ian 2013-04-23 16:28:47

+1

谢谢,我错过了。那就不要。 – David 2013-04-23 16:29:25

+0

感谢您澄清 – 2013-04-23 16:30:15

0

是的。

您还需要确保您要引用的html元素出现在javascript之前。

总之把这个

var $userInfoNode = $('#userOptions'); 
CURR_USER_ID = $userInfoNode.attr('data-userId'); 
CURR_USER_NAME = $userInfoNode.text(); 

在你的HTML页面的结尾......

+0

OP说:“这段代码被放置在一个外部的js文件中,并从'head'部分加载' – Ian 2013-04-23 16:30:02

+0

@您是对的......我没有看到 – Zo72 2013-05-02 16:42:39

2
  • 出的document.ready()块。被从头部
  • 加载
  • 外部JS文件选择放置html正文内的html元素

=>号可以尝试,并会找到$userInfoNode空。

+0

@Blowsie但OP说”这段代码被放置在一个外部的js文件中,该文件是从'head'部分加载的' – Ian 2013-04-23 16:29:20

+2

@Blowsie:该问题明确指出该脚本在''中,而所选元素在''中。你有没有看到一个头放在身体下面? – Bergi 2013-04-23 16:29:36

0

如果您必须/希望将其保存在外部文件中,您可以在引用正文标记之前将脚本元素放置在底部。它起初看起来有点奇怪,但它是有效的。

相关问题