2017-09-19 74 views
0

我想要做的是当滑块控制点与数据幻灯片=“1”有类“活跃”,那么我想设置.slider-覆盖a的背景颜色为黄金。这是我试过的,但不起作用。背景根据该滑块是活动根据当前拥有的类别更改数据元素的样式?

$(document).ready(function(){ 

$('.active[data-slide-to="1"]') { 
    $('.slider-overlay a').css('background', 'gold') 
} 

}); 

HTML的滑块

<div class="jumbotron"> 
    <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel"> 
    <ol class="carousel-indicators"> 
     <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li> 
     <li data-target="#carouselExampleIndicators" data-slide-to="1"></li> 
    </ol> 
    <div class="carousel-inner" role="listbox"> 
     <!-- Slide One - Set the background image for this slide in the line below --> 
     <div class="carousel-item slide-cc active" style="background: #111"> 
     <div class="carousel-caption d-none d-md-block"> 
       </div> 
     </div> 
     <!-- Slide Two - Set the background image for this slide in the line below --> 
     <div class="carousel-item slide-2waytray" style="background: #444"> 
     <div class="carousel-caption d-none d-md-block"> 
       </div> 
     </div> 
    </div> 
    <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev"> 
     <span class="carousel-control-prev-icon" aria-hidden="true"></span> 
     <span class="sr-only">Previous</span> 
    </a> 
    <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next"> 
     <span class="carousel-control-next-icon" aria-hidden="true"></span> 
     <span class="sr-only">Next</span> 
    </a> 
    </div> 

    <div class="slider-overlay"> 
    <h1>Welcome!</h1> 
    <a href="" title="Get Started">Get Started</a> 
    </div> 

</div> 

.slider叠加在任何时候都在页面上停留,我只是想改变它的颜色的。

这里是一个的jsfiddle https://jsfiddle.net/tpbbuqjh/2/

+0

您可以在问题中包含HTML吗? '.slider-overlay'是'.active [data-slide-to =“1”]的子节点或兄弟节点吗? – guest271314

+0

我刚添加它,对不起 – asharpdesigner

回答

1

您可以使用MutationObserver观察员更改元素属性,在突变通知

let observer = new MutationObserver(function(mutations) { 
 
    mutations.forEach(function(mutation) { 
 
    if (mutation.target.className === "active") { 
 
     $(".slider-overlay a").css("background", "gold"); 
 
     return false 
 
    } 
 
    }) 
 
}); 
 

 
let target = $("li[data-slide-to='1']")[0]; 
 

 
let config = {attributeFilter:["class"]}; 
 

 
observer.observe(target, config); 
 

 
setTimeout(function() { 
 
    target.className = "active" 
 
}, 5000)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="jumbotron"> 
 
    <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel"> 
 
    <ol class="carousel-indicators"> 
 
     <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li> 
 
     <li data-target="#carouselExampleIndicators" data-slide-to="1"></li> 
 
     <li data-target="#carouselExampleIndicators" data-slide-to="2"></li> 
 
    </ol> 
 
    <div class="carousel-inner" role="listbox"> 
 
     <!-- Slide One - Set the background image for this slide in the line below --> 
 
     <div class="carousel-item slide-cc active" style="background: #111"> 
 
     <div class="carousel-caption d-none d-md-block"> 
 
     </div> 
 
     </div> 
 
     <!-- Slide Two - Set the background image for this slide in the line below --> 
 
     <div class="carousel-item slide-2waytray" style="background: #444"> 
 
     <div class="carousel-caption d-none d-md-block"> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev"> 
 
     <span class="carousel-control-prev-icon" aria-hidden="true"></span> 
 
     <span class="sr-only">Previous</span> 
 
    </a> 
 
    <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next"> 
 
     <span class="carousel-control-next-icon" aria-hidden="true"></span> 
 
     <span class="sr-only">Next</span> 
 
    </a> 
 
    </div> 
 

 
    <div class="slider-overlay"> 
 
    <h1>Welcome!</h1> 
 
    <a href="" title="Get Started">Get Started</a> 
 
    </div> 
 

 
</div>

012执行任务
+0

哦,确实有效,但我不知道它的含义是什么!在回到第一张幻灯片后,它仍然是黄金。如果有3-4个不同的幻灯片,我将如何改变它以匹配当前幻灯片? – asharpdesigner

+0

“当前幻灯片”是什么意思? – guest271314

+0

图像滑块开始时有一个橙色的图像。当下一张幻灯片加载时,其中有黄色,此代码将按钮更改为黄色,这与匹配,但是当幻灯片返回到橙色时,按钮保持黄色。它必须将背景颜色与活动幻灯片的颜色相匹配。 – asharpdesigner

0

$(document).ready(function(){ 
 

 
if($('.active').attr('data-slide-to')=="1") { 
 
    $('body').css('background', 'gold') 
 
} 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="active" data-slide-to="1"></div>

+0

这不起作用。我认为这与页面加载有关,数据滑动到=“0”的.active正在加载,并且在幻灯片更改之前不与1匹配。如果我把它放在jfiddle中,那么这个方法可行。硬编码为data-slide-to =“1”。 – asharpdesigner

相关问题