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

时间:2016-06-17 15:25:52

标签: 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>

有任何解决此问题的建议吗?

3 个答案:

答案 0 :(得分:4)

  • 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

答案 1 :(得分:0)

对于具有count

的每个元素,这将增加page
var count = 0;
$('.page').each(function() {
    count++;
});

var vari = { 
    totalPageCount: count
};

工作jsFiddle

答案 2 :(得分:0)

The .size() method is deprecated as of jQuery 1.8.

改为使用length属性:

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

};

此外,请确保您在脚本底部或document就绪处理程序中使用此代码。如果您在完全设置DOM之前尝试获取信息,则无法获得准确的信息。