2014-10-28 3 views
0

У меня есть набор элементов, которые динамически добавляются, когда пользователь выбирает выбор из бокового меню. Чем больше вариантов выбора, тем больше элементов отображается.jQuery On Load Children

Некоторые предметы будут иметь «статистику», а некоторые предметы не будут. То, что я хочу сделать, это проверить, имеет ли элемент атрибут 'stats', и если это не так, установите ширину 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

'$ (это) .children (». Статистика) 'всегда возвращает истину –

+0

Поскольку $ (это) в этой функции будет ссылаться на тело тега, а не конкретные 'item' div справа? – Mikey

+0

№. Селектор jquery всегда будет возвращать массив элементов, поэтому, если элементы не будут найдены, он вернет пустой массив, который действителен в условии 'IF'. –

ответ

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', поэтому "var more = $ ('. Item'). Children ('. More'); не обязательно будет выбирать конкретный «элемент» div, в котором отсутствует div «stats» – Mikey

+0

Я обновил код. :) – matox