2014-10-28 110 views
0

我有一組項目,動態添加到用戶從側邊菜單中選擇選項。他們選擇的項目越多,顯示的項目越多。加載jQuery兒童

一些項目將有一個'統計'div和一些項目不會。我想要做的是檢查項目是否有'stats'div,如果沒有,則將'more'div的寬度設置得更大,以便'stats'塊留下的空白空間被佔用

這裏是獲取生成的項目的HTML:

<div class="item" idse="2116082"> 
        <div class="ico"></div> 
        <div class="ID">2237</div> 
        <div class="Time"><span>00:00</span><span>06 Dec</span></div> 
        <div class="Event"><span>Test</span><span>Test</span></div> 
        <div class="stats">Stats</div>       
        <div class="more">+ 3</div>       
        <div class="odds">                              
           <div class="odd r1 c1 g1" id="td_448023666"> 
           <div title="Home">Home</div> 
           <div>1/2</div> 
           <div class="hnd"></div> 
           </div>                                                      
           <div class="odd r1 c2 g1" id="td_448023667"> 
           <div title="Draw">Draw</div> 
           <div>7/2</div> 
           <div class="hnd"></div> 
           </div>                                                      
           <div class="odd r1 c3 g1" id="td_448023668"> 
           <div title="Away">Away</div> 
           <div>9/2</div> 
           <div class="hnd"></div> 
           </div> 
           <div class="sepOdds"></div>      
           <div class="endOdds"></div>             
        </div> 
       </div> 

這裏是我的jQuery函數:

$('body').on('load', '.item', function() { 
     if (!$(this).children('.stats')) { 
      $(this).children('.more').css('width', '132px'); 
     } 
    }); 
+0

'$(本)。兒童(」統計)'將始終返回true – 2014-10-28 06:20:17

+0

因爲$(本)在這個函數會指身體標記,而不是具體的'item'div對不對? – Mikey 2014-10-28 06:28:50

+0

沒有。 jquery選擇器將總是返回一個元素數組,所以如果沒有找到元素,它將返回一個空的數組,它在'IF'條件下有效。 – 2014-10-28 06:35:39

回答

0

你的意思是這樣嗎?

$('document').load(function() { 
    $(".item").each(function(){ 
     if (!$(this).children('.stats').length) { 
      var more = $(this).children('.more'); 
      var more_width = more.width(); 
      more.css('width', more_width + '132px'); 
     } 
    }); 
}); 

Full code on JSFiddle

+0

問題在於頁面上會出現多個'item'div,所以「var more = $('。item')。children('。more');」不一定會選擇缺少'stats'的特定'item'div div – Mikey 2014-10-28 06:30:32

+0

我更新了代碼。 :) – matox 2014-10-28 06:42:42