jQuery 使用变量更改点击时的背景颜色
jQuery change background-color on click using a variable
场景
3 个导航项
<a href='#one'></a> <a href='#two'></a> <a href='#three'></a>
3 节
<section id='one'></section>
<section id='two'></section>
<section id='three'></section>...
使导航栏项目背景颜色 = 部分背景颜色
基本图形示例
http://i.stack.imgur.com/3VTBG.jpg
JSFiddle
http://jsfiddle.net/kolorweb/r871bzz3/
我已经设法使用检索部分背景颜色的变量来实现动态颜色更改。
但是如何在单击另一个导航项时删除此背景色 属性..
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active');
$(this).addClass('active');
// gets #''
var section_id = $(this).attr('href');
// this is the variable I want to apply to the relevant nav a on click.
var section_color = $(section_id).css('background-color');
// applying variable to the nav item that has been clicked
$(this).css('background-color', section_color);
// HOW DO I THEN REMOVE THIS PROPERTY WHEN ANOTHER NAV ITEM IS CLICKED?
});
nav ul li {
list-style: none;
display: inline;
}
nav a {
text-decoration: none;
padding: 10px 20px;
}
.active {
background-color: tomato;
}
#one {
width: 100vw;
height: 100px;
background-color: tomato;
}
#two {
width: 100vw;
height: 100px;
background-color: pink;
}
#three {
width: 100vw;
height: 100px;
background-color: steelblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul>
<li><a href="#one">one</a>
</li>
<li><a href="#two">two</a>
</li>
<li><a href="#three">three</a>
</li>
</ul>
</nav>
<section id="one">One</section>
<section id="two">Two</section>
<section id="three">Three</section>
应用到激活的之后不要从其他移除,而是从之前的所有移除:
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active');
$(this).addClass('active');
// gets #''
var section_id = $(this).attr('href');
// this is the variable I want to apply to the relevant nav a on click.
var section_color = $(section_id).css('background-color');
// remove from all
$('nav ul li a').css('background-color', '');
// applying variable to the nav item that has been clicked
$(this).css('background-color', section_color);
});
还有一个短链版本:
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active').css('background-color', '');
$(this).addClass('active').css('background-color', $($(this).attr('href')).css('background-color'));
});
场景
3 个导航项
<a href='#one'></a> <a href='#two'></a> <a href='#three'></a>
3 节
<section id='one'></section>
<section id='two'></section>
<section id='three'></section>...
使导航栏项目背景颜色 = 部分背景颜色
基本图形示例 http://i.stack.imgur.com/3VTBG.jpg
JSFiddle http://jsfiddle.net/kolorweb/r871bzz3/
我已经设法使用检索部分背景颜色的变量来实现动态颜色更改。
但是如何在单击另一个导航项时删除此背景色 属性..
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active');
$(this).addClass('active');
// gets #''
var section_id = $(this).attr('href');
// this is the variable I want to apply to the relevant nav a on click.
var section_color = $(section_id).css('background-color');
// applying variable to the nav item that has been clicked
$(this).css('background-color', section_color);
// HOW DO I THEN REMOVE THIS PROPERTY WHEN ANOTHER NAV ITEM IS CLICKED?
});
nav ul li {
list-style: none;
display: inline;
}
nav a {
text-decoration: none;
padding: 10px 20px;
}
.active {
background-color: tomato;
}
#one {
width: 100vw;
height: 100px;
background-color: tomato;
}
#two {
width: 100vw;
height: 100px;
background-color: pink;
}
#three {
width: 100vw;
height: 100px;
background-color: steelblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul>
<li><a href="#one">one</a>
</li>
<li><a href="#two">two</a>
</li>
<li><a href="#three">three</a>
</li>
</ul>
</nav>
<section id="one">One</section>
<section id="two">Two</section>
<section id="three">Three</section>
应用到激活的之后不要从其他移除,而是从之前的所有移除:
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active');
$(this).addClass('active');
// gets #''
var section_id = $(this).attr('href');
// this is the variable I want to apply to the relevant nav a on click.
var section_color = $(section_id).css('background-color');
// remove from all
$('nav ul li a').css('background-color', '');
// applying variable to the nav item that has been clicked
$(this).css('background-color', section_color);
});
还有一个短链版本:
$('nav ul li a').click(function() {
$('nav ul li a').removeClass('active').css('background-color', '');
$(this).addClass('active').css('background-color', $($(this).attr('href')).css('background-color'));
});