在IF语句中是否有(this)的等价物

时间:2014-06-10 21:33:21

标签: javascript jquery

尽管使用纯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)。

我想做甚么可能吗?任何帮助将不胜感激。

谢谢, 安迪

1 个答案:

答案 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)'
});