尽管使用纯CSS可以很容易地实现这一点,但是我正在使用的论坛软件将内联样式写入我需要覆盖的HTML中,或者在这种情况下,使用jQuery动态更改。
我有一个列表菜单,我希望li.active元素中的锚点具有黑色背景。我和它在一起的地方。
if ( $('#community_app_menu li a').parent().hasClass('active')) {
$('#community_app_menu li a').css({
'background-image': 'none',
'background': 'rgba(0,0,0,1)'
});
}
显然,这针对所有" #community_app_menu li a"元素,但我不能在IF中使用$(this)。
我想做甚么可能吗?任何帮助将不胜感激。
谢谢, 安迪
答案 0 :(得分:11)
更多jQuery-ish方式是filter出你不想要定位的元素(换句话说,只选择你想要操作的元素)。这将是通用方法:
$('#community_app_menu li a').filter(
return $(this).parent().hasClass('active');
}).css({
'background-image': 'none',
'background': 'rgba(0,0,0,1)'
});
但我们可以做得更好:
如果li
元素实际上是a
元素的父元素,请将该类添加到选择器:
$('#community_app_menu li.active > a').css({
'background-image': 'none',
'background': 'rgba(0,0,0,1)'
});
即使li
元素不是父元素,您也可以使用单个选择器而不是.filter
:
$('#community_app_menu li .active > a').css({
'background-image': 'none',
'background': 'rgba(0,0,0,1)'
});