2010-12-08 36 views
0

私はこのスクリプトを正確にやっています。 私はナビゲーションバーにjqueryを使ってバックグラウンドfadeIn/fadeOutを追加しています。私の設計ではJavascript if文をappend( '')の中に入れますか?

私は私のナビゲーションバーのためのULの各リチウムの終わりに区切りイメージを持っています。それを追加するには、私のCSSを含むクラス "sep"でスパンを入れて、セパレータイメージを適切な場所にバックグラウンドとして追加します。

私の問題は、各ナビゲーションアイテムの右に表示されるように背景画像が右揃えになっていることです(以下のテキストベースの構造例を参照してください)。セパレータを持たないナビゲーション。

現在の例の構造: (項目1 |項目2 |項目3 |)私はそれになりたい何

: (項目1 |項目2 |項目3)

今これを行うには私は何とかONLY私の最後のliナビゲーション項目の全体"<span class="sep"></span>"またはちょうど"class="sep""を排除する必要がありますjavascriptの内部(そのIDは#1 N7である)

だから私はそれを行うための一般的な方法を追加するだろうと仮定しています現在のliのIDが#n7ではない場合の文if if(自分のIDは#n1から#n7、#n7はbeinグラム、最終的な)それは、それは#N7とした場合、それはすべてのヘルプは素晴らしいことだ、それを

が含まれませんので、"<span class="sep"></span>"に置く感謝。

Javascriptのコード:

$(document).ready(function() { 

//Append a div with hover class to all the LI 
$('#nav li').append('<div class="hover"><span class="sep"></span></div>'); 



$('#nav li').hover(

    //Mouseover, fadeIn the hidden hover class 
    function() { 

    $(this).children('div').fadeIn('1000'); 

    }, 

    //Mouseout, fadeOut the hover class 
    function() { 

    $(this).children('div').fadeOut('1000'); 

}).click (function() { 

    //Add selected class if user clicked on it 
    $(this).addClass('selected'); 

}); 

}); 
+0

それはあなたが、単にCSSでリスト項目の後にそれのためにJavascriptを記述する必要がセパレーターを置くことはできないということはおそらく言及する価値があります。 – Chuck

+0

これはjquery fadein/fadeoutのバックグラウンドホバー効果のためです。それは単なるCSSの編集ではありません。 – Nto

答えて

2

あなたはそれ以外のすべてを選択するために、最後の子と:not()を選択するには:last-child疑似クラスを使用することができます。また>は、複数のレベルには下がらず、ただちに子供を見る。

$('#nav > li:not(:last-child)').append('<div class="hover"><span class="sep"></span></div>'); 
$('#nav > li:last-child').append('<div class="hover"></div>'); 

これは標準的なCSSセレクタです。 jQueryでは常に動作しますが、CSSセレクタとしてIEの現在のリリースでは動作しません。

+0

私はこれがなぜ投票されたのか理解したいと思います。そして、なぜJacobの厄介な解決策が投票されたのですか? –

+0

は私ではなかった、これは – Nto

+0

@Nto(問題のためにそこに私のコメントを参照してください)カリムさんと同じ結果とが動作するようには思えん:私はすぐにそれが最後の子に追加するために書き込んだ後、それを更新し '

'ケース。 –

2
$('#nav li').each(function() { 
    var append_separator = (this != $('#nav li:last')[0]); 
    $(this).append('<div class="hover">' + ((append_separator) ? '<span class="sep"></span>' : '') + '</div>') 
}); 

jsFiddle example

+0

実際に彼の全体の質問を読んで、あなたのコードを李の数に結びつけていない、いい仕事です。 – hobodave

+0

$( '#nav li')のみを置き換えますか?append( '

');これとともに?もしそうなら、私は試してみたが、それは全体を壊すようだ... – Nto

+0

@Ntoこれは動作します:http:// jsfiddle。net/8ayTn/ –