【问题标题】:jQuery access variable in <body> tag?<body> 标签中的 jQuery 访问变量?
【发布时间】:2010-02-23 10:34:23
【问题描述】:

基本上我需要在我的网页的 body 标签中指定一个 JQuery 变量,并在我的 head 标签中有一个函数来读取它。这是我的 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”(正确)

当我单击类“paymentAdd”的链接时,我收到警报“rowCount 1 = undefined”(不正确 - 应为 3?)

【问题讨论】:

    标签: jquery html variables tags


    【解决方案1】:

    在任何document.ready 函数之外的全局范围内声明变量:

    var rowCount = 0;
    jQuery(document).ready(function($) {
        rowCount = 3;
        alert ("rowCount 2 = " + rowCount);
    });
    

    【讨论】:

      【解决方案2】:

      您已将变量声明为函数内部的局部变量,因此它不存在于函数外部。一个简单的解决方案是将其声明为全局的,它会在以后继续存在:

      <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);
      

      当然,脚本之间仍然存在冲突的风险,但使用单个全局对象比使用一堆全局变量要少得多。

      【讨论】:

        猜你喜欢
        • 2018-04-04
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多