2016-06-17 29 views
1

在我的代碼中的許多點上,我需要知道使用了多少個.page類。 要知道這個我使用$(".page").size() 我想將這些信息保存到一個變量。 所以我寫了這一點:jQuery .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> 

任何建議,以解決這個問題?

+0

你能提供一個可重複的演示? – nicael

+2

'totalPageCount'屬性應該是一個函數和FYI,你應該使用jQuery set的'length'屬性:'totalPageCount:function(){return $('。page')。length; }然後:'console.log(vari.totalPageCount());'。至少,通過操縱DOM,你確定它會返回正確的預期數字 –

+0

@ A.Wolff,這是一個很好的建議。請作爲回答發佈 – wmash

回答

0

這將增加count每個元素與具有page

var count = 0; 
$('.page').each(function() { 
    count++; 
}); 

var vari = { 
    totalPageCount: count 
}; 

工作jsFiddle

0

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

使用length屬性,而不是:

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

}; 

此外,請確保您在腳本底部或document準備好的處理程序中使用此代碼。如果您在DOM完全安裝之前嘗試獲取它,則無法獲得準確的信息。

4
  • vari.totalPageCount只有在聲明時才進行評估。
  • 因此,第一次運行時它的值只有$(".page").size()

除非您正在等待準備好文件,否則尚未添加.page的子項,它的長度爲0

當您稍後調用控制檯並再次執行選擇器時 - 您會在控制檯消息中獲得真正的計數 - 但存儲值已在vari中計算爲0。

長度()尺寸()在jquery的等同的功能,但尺寸已被棄用所以長度是相應的函數調用。但是在任何一種情況下 - 當vari對象被構造爲具有有意義的值時,它可能只是太早評估長度。

具有下列功能給你錯誤的值的屬性:

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

Relevant documentation

+0

我剛試過這個,我得到的一切都是未定義的。但與.size()它的作品。 – MORHERO

相關問題