2014-11-20 5 views
0

Я использую модуль в Joomla для новостей и динамически беру статьи. Некоторое время статей не так много, и он отображает пустые поля, потому что он предназначен для захвата 7 статей.Если div отсутствует, то скройте другой div

Когда статья отображается его содержит этот код:

<div class="ns2-row"> 

    <div class="ns2-row-inner"> 

    <div class="ns2-column flt-left col-1"> 
      CONTENT 
    </div> 
    <div style="clear:both"></div> 
    </div> 
    <div style="clear:both"></div> 
</div> 

Когда нет статьи это код:

<div class="ns2-row"> 

    <div class="ns2-row-inner"> 

    <div style="clear:both"></div> 
    </div> 
    <div style="clear:both"></div> 
</div> 

Что я имею в виду это: если div.ns2 -колонка отсутствует в div.ns2-row-inner, затем скрыть div.ns2-row

Любая идея, как это сделать?

ответ

0

С помощью Shadow, я нашел решение. Моя проблема заключалась в том, что у меня была еще одна библиотека jQuery, и у меня появились некоторые проблемы. Итак, я сделал это:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script> 
<script type="text/javascript"> 
var jQuery_1_8_3 = $.noConflict(true); 
</script> 
<script type="text/javascript"> 
jQuery_1_8_3('div.ns2-row-inner').filter(function(){ 
    return jQuery_1_8_3(this).find('div.ns2-column').length==0; 
}).closest('div.ns2-row').hide(); 
</script> 
2

Попробуйте следующее: Вы можете использовать .filter() и проверить, имеет ли элемент ns2-column, чтобы вернуть TRUE или FALSE. Для ИСТИНЫ используйте closest('div.ns2-row'), чтобы найти родителя div, а затем скройте его.

$('div.ns2-row-inner').filter(function(){ 
    return $(this).find('div.ns2-column').length==0; 
}).closest('div.ns2-row').hide(); 

DEMO

+0

Bingo !!! Это то, что я искал. –

+0

рад помочь вам :) –

+0

Не могли бы вы изменить это для jQuery 1.4.3? Потому что, когда я добавляю это, он работает над этим модулем, но он влияет на плохой другой модуль, который захватывает jQuery 1.4.3 –

0
$('.ns2-row').each(function() 
{ 
    $(this).toggle($(this).find('.ns2-row-inner').has('.ns2-column')); 
}); 

Пояснение: так как вы сказали, "7 статей" Я использовал each для перебора (я предполагаю, что есть более чем одна строка). Внутри каждого из них будет отображаться видимость (.ns2-row) в зависимости от того, содержит ли дочерний элемент .ns2-row-inner.ns2-column.

Дальнейшее чтение на то, что я использовал:

Переключение: http://api.jquery.com/toggle/

Имеет: http://api.jquery.com/has/

0
$('.ns2-row').each(function(){ 
    if($(this).find('.ns2-row-inner .ns2-column').length === 0){ 
     $(this).hide(); 
    } 
}); 

Ссылка:

length

each

+0

Вам не хватает символов '' 'или' '' в вашей первой строке (в селекторе). –

+0

только что исправлено ;-) – empiric

0

Этот сценарий должен быть, как это, я думаю,

$('.ns2-row').each(function() 
{ 
    $(this).toggle($(this).find('ns2-row-inner .ns2-column').length > 0); 
}); 
+0

Это будет работать, но (чтобы быть педантичным) пользователь спросил, что элемент '.ns2-column' должен быть проверен в контексте' .ns2-row-inner'. Это может быть хорошо, если это где-то еще. –

+0

Я предполагаю, что '.ns2-row-inner' - всего лишь оболочка. Он будет там, даже если один контент div присутствует –

+0

'if div.ns2-column отсутствует в div.ns2-row-inner' <ваш код не проверяет это. –

Смежные вопросы