javascript - jQuery .size() 函数不适用于变量

标签 javascript jquery html console.log

在我的代码中的许多地方,我需要知道使用了多少个 .page 类。 要知道这一点,我使用 $(".page").size() 我想将这些信息保存到一个变量中。 所以我写了这个:

var vari = { 
    *more variables*
    totalPageCount : $(".page").size()
};

问题是 vari.totalPageCount 总是返回 0。

使用 console.log() 我得到这个:

console.log($(".page").size());    // Return 8
console.log(vari.totalPageCount);  // Return 0

编辑: 这是我如何使用它的示例。

JS:

var vari = {

    currentPage : 0, 
    pageAnimations : 0, 
    animationList : ".fade-in, .fade-out",
    totalPageCount : $(".page").size(),

};

var footer = {

    html : function(){
        var html;
        var date = this.date();

        for(var i=0; i<vari.totalPageCount; i++){
            html = '<span class="pageNumber" id="pageNumber">Folie:'+i+'  &#8226;  '+vari.custom["companyName"]+'  &#8226;  '+date+'</span>';
            $("#normalPage"+i).append(html);
        }

        return;
    }

};

HTML:

<body class="presWrapper">
    <div class="pageWrapper">   
        <div class="page startPage" id="startPage">
            <h2 class="mainTitle">Lorem</h2>
            <h4 class="subTitle">Ipsum</h4>
        </div>
    </div>
    <div class="pageWrapper">
        <div class="page normalPage" id="normalPage1">
            <div class="content">
                <p class="fade-in">HELLO WORLD</p>
            </div>
        </div>
    </div>
    <div class="pageWrapper">
        <div class="page endPage" id="endPage">
            <div class="content">    
                <p class="fade-out">HELLO SATURN</p>
                <p class="fade-out">HELLO WORLD</p>
                <p class="fade-in">HELLO WORLD</p>
                <p>pTag</p>
            </div>    
        </div>
    </div>
</body>

有什么解决这个问题的建议吗?

最佳答案

  • vari.totalPageCount 仅在声明时进行评估。
  • 因此,它在第一次运行时只有 $(".page").size() 的值。

除非您正在等待文档准备就绪,否则 .page 的子项尚未添加并且它的长度为 0

当您稍后调用控制台并再次执行选择器时 - 您会在控制台消息中获得真实计数 - 但存储的值已在 vari 中计算为 0。

length()size() 是 jquery 中的等效函数,但 size 已被弃用,因此 length 是要调用的适当函数。但在任何一种情况下 - 当 vari 对象被构造为具有有意义的值时,您很可能只是过早地评估长度。

以下是否为您提供了错误的属性值:

$(document).ready(function () {
     var vari = {totalPageCount: $('.page').length};
     console.log(vari.totalPageCount);
});

Relevant documentation

关于javascript - jQuery .size() 函数不适用于变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37885229/

相关文章:

javascript - 您如何监控选择标签?

javascript - 如何从第三方应用程序替换评论部分中的图像

javascript - 为什么 jQuery 设置 jQuery 禁用属性仅适用于第一个单选输入?

php - JQuery $.ajax, $.get 问题

javascript - 表排序器列显示/隐藏功能

javascript - 如何让这个函数读取多个选择?

javascript - 找到 JWT 后如何导航一次?

javascript - 将 requirejs 用于模块化游戏引擎

html - 缩放问题 - CSS

php - 数据库列内的静态值