因为我的项目有点过载javascript
& jQuery
个脚本,
我在尝试将所有内容分成几个部分时遇到问题,...比如类别或阶段 ......
之前这两个调用,即“当前项目”调用,
<head>
//i am loading the jQuery & jQuery-UI... and then :
// right after jQuery comes my first section of project
<script type="text/javascript" src="jsV2\jQueryAjaxNoPostBack.js"></script>
<script type="text/javascript" src="jsV2\stage1.js" ></script>
<script type="text/javascript">
// is valid in stage1.js , naturally...
var jsTxtVal = document.getElementById("TBX_TableSelectorFirstStage");
//and that won't work
var jQueryTxtVal= $('#TBX_TableSelectorFirstStage').val();
</script>
</head>
并在该分隔文件中尝试
//stage1.js
//---- before ready()-------
//won't work
var jQueryTxtVal= $('#TBX_TableSelectorFirstStage').val();
//works
var jsTxtVal = document.getElementById("TBX_TableSelectorFirstStage");
$('document').ready(function () {
var TBX_TableSel = $('#TBX_TableSelectorFirstStage');
var jQueryTxtVal= $('#TBX_TableSelectorFirstStage').val();
var jsTxtVal = document.getElementById("TBX_TableSelectorFirstStage");
$('.someElement's Class).click(function () {
// this will not work unless i will assign "jQueryTxtVal" right here .
alert(jQueryTxtVal);
//and... this will work no matter where the assignment took place .
//either in main page (i call it "the globlas" of project)
//or at the top of every "section" of project...
alert(jsTxtVal );
});
现在,如果我使用 plain JavaScript
,我甚至可以为所有方法设置一部分全局变量......几乎在任何地方,例如在<sctipt></srctipt>
下jquery,在主页.aspx
所以我想知道,我怎么能在jQuery中使用“globals”? 或者它只是用例(?)..我不这么认为......
...我还在defer="defer"
电话上尝试stage1.js
,在主页.aspx
内
没事我尝试成功
答案 0 :(得分:2)
我认为问题在于您的行:
var jQueryTxtVal= $('#TBX_TableSelectorFirstStage').val();
在jQuery文档就绪处理程序之外,几乎可以肯定在dom准备就绪之前执行。
尝试将其放入您的处理程序中。这也将有助于您的代码,因为变量jQueryTxtVal将是就绪处理函数的本地,并且不会污染全局范围(您应该避免的事情)
有许多模式可以帮助最小化全局范围中的变量,例如简单的命名空间模式。但实质上,变量范围是功能范围。