我的代码如下:
<li>
<a href="<?php echo base_url()?>home/promos/call" class="promo-call active-call"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/text" class="promo-text"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/data" class="promo-data"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/combo" class="promo-combo"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/recent" class="promo-recent"></a>
</li>
我想要做的是当用户点击课程promo-text
时,它会在课程属性中追加active-text
例如:
<a class="promo-text active-text></a>
并将添加此css样式:background:url(../images/call_icon_0.png) 0 -72px no-repeat!important;
当然我需要删除其他类中的active。
答案 0 :(得分:4)
如果您不介意使用Javascript + Jquery + CSS,请尝试以下操作。
首先创建一个像这样的CSS类 -
.active-text
{
background: url(../images/call_icon_0.png) 0 -72px no-repeat;
}
然后使用以下JQuery代码 -
$(document).ready(function()
{
$("li a").click(function()
{
$("li a.active-text").removeClass("active-text");
$(this).addClass("active-text");
});
});
jsFiddle演示。
要向元素添加任何特定CSS样式,请使用css()函数 -
$(this).css("color", "red");
这将动态地将color:red
CSS样式添加到所选元素。您可以通过这种方式添加任何CSS规则。
答案 1 :(得分:2)
使用javascript&amp; jquery你可以使用http://api.jquery.com/click/:
$('li a').click(function(){
// remove all classes
$('li a').removeClass('active-text');
// add class to the selected element
$(this).addClass('active-text);
});
答案 2 :(得分:2)
您可以使用伪类 a:active
而不是使用单独的类a.promo-text {
/* some style */
}
a.promo-text:active {
background:url(../images/call_icon_0.png) 0 -72px no-repeat!important;
}
如果每个链接有多个背景,
a.promo-text:active {
/* text_icon background */
}
a.promo-call:active {
/* call_icon background */
}
a.promo-recent:active {
/* recent_icon background */
}
等等
答案 3 :(得分:1)
手动设置,因为它会在点击后重定向到另一个页面。
例如在通话页面中,这将是代码:
<li>
<a href="<?php echo base_url()?>home/promos/call" class="promo-call active-text active-call"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/text" class="promo-text"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/data" class="promo-data"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/combo" class="promo-combo"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/recent" class="promo-recent"></a>
</li>
在文字页面中:
<li>
<a href="<?php echo base_url()?>home/promos/call" class="promo-call active-call"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/text" class="promo-text active-text"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/data" class="promo-data"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/combo" class="promo-combo"></a>
</li>
<li>
<a href="<?php echo base_url()?>home/promos/recent" class="promo-recent"></a>
</li>
答案 4 :(得分:1)
使用纯CSS,您无法在点击时设置新类,您需要使用Javascript。 (参见xylar对一个例子的回答)
如果您有兴趣在悬停时更改样式,即当用户将鼠标移到列表项上时,您可以使用li:hover
CSS指令。
答案 5 :(得分:1)
$(document).ready(function(){
$("li a").click(function(){
$(this).addClass("class name here").parent().siblings().children("a").removeClass("to remove class name here");
});
});
应该让你到那儿。
答案 6 :(得分:1)
如果我是对的,那么你就不能用!important
选项添加内联样式,因此你应该为那种情况创建单独的类或id(我会更好地使用类)。也。您可能在页面上有多个列表,因此最好使用一个特定的列表,因此您最接近您的li,但如果您的链接将转到某处(而不是页面操作),那么它将重新加载并且存在在JavaScript中没有意义。最好添加PHP
然后。或者如果你用Javascript以某种方式解析它或者做Ajax调用,那么它很好(可能)。
<style type="text/css">
.active-text {
background: url(../images/call_icon_0.png) 0 -72px no-repeat !important;
}
</style>
<script type="text/javascript">
$(function()
{
$('li a').click(function(){
var $this = $(this);
$this.closest('ul').find( 'li a' ).removeClass('active-text');
$this.addClass('active-text);
});
});
</script>