2014-10-28 112 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