2014-02-21 2 views
-1

У меня есть div div с тем же классом. Внутри этого divs я добавил еще один div, чтобы разместить объявление. Теперь я пытаюсь скрыть объявление div, если ширина div, которая содержит мое объявление div, равна 366px;Для каждого div с тем же классом сделайте что-нибудь

Я попытался код, приведенный ниже, но он скрывает только мой первый рекламный DIV ..

Пример:

<div class="masterdiv"> 
<div id="myaddiv"></div> 
</div> 

<div class="masterdiv"> 
<div id="myaddiv"></div> 
</div> 

<div class="masterdiv"> 
<div id="myaddiv"></div> 
</div> 

и мой JQuery код:

var adwidth = $(".masterdiv").width(); 
if (adwidth == 366){ 
$('#myaddiv').hide(); 
} 

Спасибо!

+7

у вас также есть несколько 'id'. они должны быть уникальными. – ashley

+0

id должен быть уникальным. в противном случае вы можете использовать имя класса. –

ответ

1

Потому что var adwidth = $(".masterdiv").width(); возвращает только первое значение. Ответ в вашем названии, вам нужно использовать каждый. Другой проблемой является идентификаторы SINGULAR, так что вы должны использовать класс

Используя каждый:

$(".masterdiv").each(function() { 
    var elem = $(this); 
    var width = elem.width(); 
    if (width == 366){ 
     elem.find('.myaddiv').hide(); //use a class since only one element can have an id 
    } 
}); 

Использование фильтра:

$(".masterdiv").filter(function() { 
    return ($(this).width() == 366); 
}).find('.myaddiv').hide(); 

Обновленный HTML:

<div class="masterdiv"> 
    <div class="myaddiv"></div> 
</div> 
+0

какой-нибудь пример пожалуйста? Спасибо! Я пробовал этот $ ('. Masterdiv') каждый (function() { мой код отдыха )}; Без везения –

+0

Мне нравится случайный рейтинг голосов. – epascarello

1

вы не должны использовать дубликат ids.use:

$('div .masterdiv').each(function(){ 
    if($(this).width()==366){ 
    $(this).find('div').hide(); 
}}); 
1

Try:

$('.masterdiv').each(function(){ 
    if($(this).width()==386){ 
     $(this).hide(); 
    } 
}); 
1

Это только делает первый DIV, потому что вы используете идентификаторы вместо классов. Так как только один id на странице javascript останавливается после сопоставления первого. переходите на классы, и все должно быть в порядке.

1
$(".masterdiv").each(function(){ 
    var current = $(this); 
    if(current.width() == 366) { 
     current.hide(); 
    } 
}); 
0

Вы должны изменить следующим образом:

$('#myaddiv', '.masterdiv').each(function() { 
     var width = $(this).width(); 
     (width > 366) ? $(this).hide() : 0;  
}); 

Вы можете попробовать на этом live DEMO

1

вы используете одинаковые идентификаторы для различных дивы

Вместо ид, дать класс наименование

<div class="masterdiv"> 
     <div class="myaddiv"> 
     </div> 
    </div> 
    <div class="masterdiv"> 
     <div class="myaddiv"> 
     </div> 
    </div> 
    <div class="masterdiv"> 
     <div class="myaddiv"> 
     </div> 
    </div> 


$(document).ready(function() { 
     var adwidth = $(".masterdiv"); 
     for (i = 0; i < adwidth.length; i++) { 
      if ($(adwidth[0]).attr("width") == 366) { 
       $(this).find('.myaddiv').hide() 
      } 
     } 

    }); 
Смежные вопросы