仅当代码中其他地方存在 class 时,如何应用 CSS?
How to apply CSS only if class exists elsewhere in code?
所以我只想在其他地方的代码中存在 class 时才应用某个 CSS。我想知道这是否只能通过 css 实现,或者我是否需要为此使用 Jquery。有人对此有任何想法吗?如果我需要使用 Jquery,你能举个例子吗?
正如您在我的代码中看到的,我尝试做的是在 li.active
存在时应用 margin-top
。
显然我的 jsfiddle 不工作:http://jsfiddle.net/zt40oa7d/
或者看下面的代码:
div.navbar {
background-color: #CCF;
}
ul.box {
margin: 0;
}
div.text {
background-color: #FFC;
padding: 10px;
}
div.page div.navbar ul.box li.active div.text {
margin-top: 100px;
}
<div class="page">
<div class="navbar">
<ul class="box">
<li class="active"><a href="#">Link 1</a>
</li>
</ul>
</div>
<div class="text">This the div that should go down due to the submenu ul</div>
</div>
使用jquery,你可以在文档准备好class .active
找到li 元素的长度,如果是,则将css 设置为div class .text
:
$(function(){
if($('.active').length){
$('div.text').css(' margin-top',' 100px');
}});
是的,它很有可能做到这一点,它在 JQuery 中调用了 addClass() 方法,它的用法是这样的
$( "div" ).addClass( "text" );
依次将此 CSS 添加到您的元素中
.text
{
background-color: #FFC;
padding: 10px;
}
这将产生this fiddle.
所示的效果
您也可以使用 $( "div" ).removeClass( "text" );
删除它
编辑
您还可以使用 JQuery 中的 hasClass() 方法检查活动 class 是否存在,如下所示:
if( $("li").hasClass( "active" ) )
{
$( "#specificDiv" ).addClass( "text" );
}
还有你的HTML更新
<div class="page">
<div class="navbar">
<ul class="box">
<li class="active"><a href="#">Link 1</a>
</li>
</ul>
</div>
<div id="specificDiv">This the div that should go down due to the submenu ul</div>
</div>
此处您正在检查 <li>
是否分配有 class "active"。如果这样做,它将在包含 id "specificID" 的元素上设置 css "text",但不会影响任何其他 div。
看看这是做什么的here
阅读有关 JQuery addClass() 方法的更多信息 here。
阅读有关 JQuery hasClass() 方法的更多信息 here。
像这样应该可以解决问题:
$('.box li').each(function() {
if($(this).hasClass('active')) {
// add your margin-top here
}
});
如果您只是想在 某些 li > a
已被 某些 div 应用规则单击...您只能CSS
.text {
display: none;
background-color:#FFC;
padding:10px;
}
.text:target {
display:block;
}
#text1 {
background: #bada55;
}
#text2 {
background: #639;
}
#text3 {
background: tomato;
}
html
<div class="page">
<div class="navbar">
<ul class="box">
<li><a href="#text1">Test dropdown 1</a>
</li>
<li><a href="#text2">Test dropdown 2</a>
</li>
<li><a href="#text3">Test dropdown 3</a>
</li>
</ul>
</div>
<div id="text1" class="text">
<h1>Foo</h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima aspernatur qui excepturi quas non tempore deserunt neque eos ducimus nobis tempora nam beatae aliquam necessitatibus aliquid accusantium vel libero cumque!
</div>
<div id="text2" class="text">
<h1>Bar</h1>This the div that should go down due to the submenu ul
</div>
<div id="text3" class="text">
<h1>Baz</h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellendus impedit quam cum. Sit quaerat architecto maiores veritatis labore minus dolorem earum sint sapiente est pariatur accusamus ducimus dolore sunt ipsa!
</div>
</div>
你可以这样做。检查 li 的 ul 标签 children() 是否有 '.active' class 。如果确实有,则将 attr 设置为 id '#textdiv' 的活动,如下所示:
写这个(在你的 'active' class 中添加 id):
<div id="textdiv" class="text">div text</div>
jquery
$(document).ready(function(){
var a = $("ul.box").children('li').hasClass('active');
if (a == true) {
alert("asdf");
$("#text").attr("class","text");
}
});
我同意 Milind Anantwar 使用 jQuery 的回答。
但是我会更具体地说明我的 if。
$('.active')
将 return 具有 class 的任何元素激活
$('li.active')
将 return li 元素 class 激活
if ($('li.active').length) { ... }
所以我只想在其他地方的代码中存在 class 时才应用某个 CSS。我想知道这是否只能通过 css 实现,或者我是否需要为此使用 Jquery。有人对此有任何想法吗?如果我需要使用 Jquery,你能举个例子吗?
正如您在我的代码中看到的,我尝试做的是在 li.active
存在时应用 margin-top
。
显然我的 jsfiddle 不工作:http://jsfiddle.net/zt40oa7d/
或者看下面的代码:
div.navbar {
background-color: #CCF;
}
ul.box {
margin: 0;
}
div.text {
background-color: #FFC;
padding: 10px;
}
div.page div.navbar ul.box li.active div.text {
margin-top: 100px;
}
<div class="page">
<div class="navbar">
<ul class="box">
<li class="active"><a href="#">Link 1</a>
</li>
</ul>
</div>
<div class="text">This the div that should go down due to the submenu ul</div>
</div>
使用jquery,你可以在文档准备好class .active
找到li 元素的长度,如果是,则将css 设置为div class .text
:
$(function(){
if($('.active').length){
$('div.text').css(' margin-top',' 100px');
}});
是的,它很有可能做到这一点,它在 JQuery 中调用了 addClass() 方法,它的用法是这样的
$( "div" ).addClass( "text" );
依次将此 CSS 添加到您的元素中
.text
{
background-color: #FFC;
padding: 10px;
}
这将产生this fiddle.
所示的效果您也可以使用 $( "div" ).removeClass( "text" );
编辑
您还可以使用 JQuery 中的 hasClass() 方法检查活动 class 是否存在,如下所示:
if( $("li").hasClass( "active" ) )
{
$( "#specificDiv" ).addClass( "text" );
}
还有你的HTML更新
<div class="page">
<div class="navbar">
<ul class="box">
<li class="active"><a href="#">Link 1</a>
</li>
</ul>
</div>
<div id="specificDiv">This the div that should go down due to the submenu ul</div>
</div>
此处您正在检查 <li>
是否分配有 class "active"。如果这样做,它将在包含 id "specificID" 的元素上设置 css "text",但不会影响任何其他 div。
看看这是做什么的here
阅读有关 JQuery addClass() 方法的更多信息 here。
阅读有关 JQuery hasClass() 方法的更多信息 here。
像这样应该可以解决问题:
$('.box li').each(function() {
if($(this).hasClass('active')) {
// add your margin-top here
}
});
如果您只是想在 某些 li > a
已被 某些 div 应用规则单击...您只能CSS
.text {
display: none;
background-color:#FFC;
padding:10px;
}
.text:target {
display:block;
}
#text1 {
background: #bada55;
}
#text2 {
background: #639;
}
#text3 {
background: tomato;
}
html
<div class="page">
<div class="navbar">
<ul class="box">
<li><a href="#text1">Test dropdown 1</a>
</li>
<li><a href="#text2">Test dropdown 2</a>
</li>
<li><a href="#text3">Test dropdown 3</a>
</li>
</ul>
</div>
<div id="text1" class="text">
<h1>Foo</h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima aspernatur qui excepturi quas non tempore deserunt neque eos ducimus nobis tempora nam beatae aliquam necessitatibus aliquid accusantium vel libero cumque!
</div>
<div id="text2" class="text">
<h1>Bar</h1>This the div that should go down due to the submenu ul
</div>
<div id="text3" class="text">
<h1>Baz</h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellendus impedit quam cum. Sit quaerat architecto maiores veritatis labore minus dolorem earum sint sapiente est pariatur accusamus ducimus dolore sunt ipsa!
</div>
</div>
你可以这样做。检查 li 的 ul 标签 children() 是否有 '.active' class 。如果确实有,则将 attr 设置为 id '#textdiv' 的活动,如下所示:
写这个(在你的 'active' class 中添加 id):
<div id="textdiv" class="text">div text</div>
jquery
$(document).ready(function(){
var a = $("ul.box").children('li').hasClass('active');
if (a == true) {
alert("asdf");
$("#text").attr("class","text");
}
});
我同意 Milind Anantwar 使用 jQuery 的回答。
但是我会更具体地说明我的 if。
$('.active')
将 return 具有 class 的任何元素激活
$('li.active')
将 return li 元素 class 激活
if ($('li.active').length) { ... }