对于同一班级的每个div做一些事情

时间:2014-02-21 13:46:19

标签: javascript jquery

我有一些同类的div。在这个div中我添加了另一个div来放置广告。 现在我试图隐藏广告div,如果持有我的广告div的div的宽度等于366px;

我试过下面的代码,但它只隐藏了我的第一个广告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 个答案:

答案 0 :(得分:1)

因为var adwidth = $(".masterdiv").width();仅返回第一个值。答案在你的标题中,你需要使用每一个。另一个问题是ids是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>

答案 1 :(得分:1)

你不应该使用重复的ids.use:

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

答案 2 :(得分:1)

尝试:

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

答案 3 :(得分:1)

这只是在做第一个div,因为你使用的是id而不是类。由于每页只能有一个id,因此javascript在匹配第一个后停止。改为上课,你应该没事。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

你对不同的div使用相同的id

而不是id,给出类名

<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()
            }
        }

    });

答案 6 :(得分:0)

你必须以这种方式改变:

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

您可以试试这个live DEMO