基本上我需要在我的网页的body标签中指定一个JQuery变量,并在我的head标签中有一个函数读取它。这是我头标签中的功能(简化):
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
$('a.paymentAdd').click(function(){
alert ("rowCount 1 = " + rowCount);
rowCount++;
});
});
</script>
这在我的身体标签中:
<script type="text/javascript">
jQuery(document).ready(function($) {
var rowCount = 3;
alert ("rowCount 2 = " + rowCount);
});
</script>
(我必须在我的body标签中指定变量,因为它是由PHP生成的,只在我模板的那部分可用。)
当页面加载时,我收到警告“rowCount 2 = 3”(正确)
当我点击“supportAdd”类的链接时,我收到警告“rowCount 1 = undefined”(错误 - 期待3?)
答案 0 :(得分:2)
在任何document.ready
函数之外的全局范围内声明变量:
var rowCount = 0;
jQuery(document).ready(function($) {
rowCount = 3;
alert ("rowCount 2 = " + rowCount);
});
答案 1 :(得分:1)
您已将变量声明为函数内的局部变量,因此它不存在于函数外部。一个简单的解决方案是将其声明为全局,并且它将在以后存活下来:
<script type="text/javascript">
var rowCount = 3;
jQuery(document).ready(function($) {
alert ("rowCount 2 = " + rowCount);
});
</script>
但是,在全球范围内声明变量始终是潜在的冲突风险。如果页面上有不同的脚本,每个脚本声明它们自己的全局变量集,那么如果它们使用相同的变量名,它们将无法一起工作。如果你需要全局访问这样的几个变量,你可能想要创建一个全局对象作为命名空间并将它们作为属性放置:
var listData = {
rowCount: 3,
currentRow: null,
sorting: 'Name'
}
然后您可以访问属性:
alert("rowCount2 = " + listData.rowCount);
当然,脚本之间仍然存在冲突的风险,但是对于单个全局对象而言,它远远少于一堆全局变量。