2017-05-08 53 views
0

我想我非常接近,只需要最後一點關於如何將$(this)集成到我的函數中。針對元素組的if.length函數後的目標特定元素

我想看看parentDiv是否包含childDiv,然後刪除上述parentDiv(全部由類定義)的邊框。

到目前爲止,我有:

$(function() { 
 
    var parentDiv = document.getElementsByClassName("class1"); 
 
    var childDiv = document.getElementsByClassName("class2"); 
 

 
    if ($(childDiv, parentDiv).length) { 
 
    $(parentDiv).addClass("noborder"); 
 
    } 
 

 
});

想象HTML如下,我們的目標是,在第二class1的記載:類= 「class1的noborder」,因爲班級1包含班級2

<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
</div> 
 
<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="class2"></div> 
 
    <div class="bla"></div> 
 
</div>

目前我明明更換所有parentDiv的,但我想指定的特定一個的如果測試正在上完成,任何幫助讚賞

+0

請問您是否需要包含您的html代碼? –

+0

我試圖在if測試中添加$(this),但是我覺得我需要將if測試包裝到另一個函數中,在其中建立$(this)off parentDiv並使用它,但我不確定如何去追蹤它。 – Counterfire

+0

添加到主帖子,我在不同的機器上發佈這個,但想象如上面寫的HTML - 簡化 – Counterfire

回答

0

如你不介意使用jQuery,您可以使用.has()函數來實現這一

$(function(){ 
 
    $(".class1").has(".class2").addClass('noborder'); 
 
});
.class1 { 
 
    width: 50px; 
 
    height: 50px; 
 
    background: yellow; 
 
    margin: 10px; 
 
    border: 1px solid red; 
 
} 
 

 
.noborder { 
 
    border: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
</div> 
 
<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="class2"></div> 
 
    <div class="bla"></div> 
 
</div>

+0

完美,可行! – Counterfire

0

使用jQuery :has selectorhas() method

$('.class1:has(.class2)').addClass('border'); 
 

 

 
// add content for demo 
 
$('.class1').children().text(function(){ 
 
    return $(this).attr('class') 
 
})
.border{border: 1px solid green}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
    <div class="bla"></div> 
 
</div> 
 
<div class="class1"> 
 
    <div class="bla"></div> 
 
    <div class="class2"></div> 
 
    <div class="bla"></div> 
 
</div>

-2
if(jQuery('#class1').find('.class2').length !== 0){ 
    jQuery('#class1').addClass("noborder"); 
} 

這應該工作。