0

我正在尝试阅读一对链接的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>
4

3 回答 3

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)'); 
    }
});
于 2012-08-17T08:49:26.960 回答
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)'); 
于 2012-08-17T08:49:48.020 回答
0

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

$('.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)'); 
}
于 2012-08-17T08:49:59.453 回答