jQuery给出特定的标签CSS

时间:2012-08-17 08:47:33

标签: jquery this attr

我正在尝试读取一对链接的href,并且根据href是什么,我想给一些CSS指定一个链接。这是我尝试过的代码:

$('.pane-menu-block-2 .menu li a').each(function(){
if($('a[href="node/3"]')){ $(this).attr('style','background-image:url(/sites/all/themes/zen/zen-internals/images/fraga_lararen.png)'); }
})

但它不起作用。它为该div中的每个链接提供相同的背景。链接如下所示:

<div class="pane-menu-block-2">
    <ul class="menu">
        <li><a href="/">Våra program</a></li>
        <li><a href="node/3">Fråga läraren</a></li>
    </ul>
</div>

3 个答案:

答案 0 :(得分:2)

if($('a[href="node/3"]'))将始终进入if块,因为在javascript中,对象始终被视为true

您应该检查如下所示的href:

$('.pane-menu-block-2 .menu li a').each(function(){
    if($(this).attr('href') === 'node/3') { 
        $(this).attr('style','background-image:url(/sites/all/themes/zen/zen-internals/images/fraga_lararen.png)'); 
    }
});

答案 1 :(得分:1)

$('.pane-menu-block-2 .menu li a').each(function(){
    if ( $(this).attr('href')==='node/3' ) { 
        $(this).css('background-image', 'url(/sites/all/themes/zen/zen-internals/images/fraga_lararen.png)'); 
    }
})​;​

或者只需使用选择器,不需要each()功能:

$('.pane-menu-block-2 .menu li a[href="node/3"]').css('background-image', 'url(/sites/all/themes/zen/zen-internals/images/spank_the_teacher.png)'); 

答案 2 :(得分:0)

使用.is(),您可以将当前元素与选择器进行匹配。您在代码中犯的最大错误是您选择了文档中的每个<a>,而不是使用$(this)来引用.each()循环的每次迭代中的当前元素。 / p>

$('.pane-menu-block-2 .menu li a').each(function() {
    if($(this).is('a[href="node/3"]')) { 
        $(this).attr('style','background-image:url(/sites/all/themes/zen/zen-internals/images/fraga_lararen.png)'); 
    }
});

您也可以更简单并使用标准相等(===来严格键入):

if($(this).attr('href') === "node/3") { 
    $(this).attr('style','background-image:url(/sites/all/themes/zen/zen-internals/images/fraga_lararen.png)'); 
}