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()すると、現在の要素をセレクターと照合できます。コードで犯す大きな間違いは、ループの各反復で現在の要素を参照する which<a>を使用する代わりに、ドキュメント内のevery を選択していることです。$(this).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 に答える