2012-02-09 17 views
3
ときにその準備ができて、これよりも良くなりますいくつかは、どのようなプラグインエフェクトを構築しようと

a simple demoを効率的

アッパー&下の兄弟に沿って横断します。

数字0,12に注意してください。

これは、現在のレベルが単純であることを示します。0は最上位を表し、2は最小です。デモhereを確認してください。

カラムをクリックするたびに、それはメインカラムになります(したがって、レベルとして0が得られます)と残りのカラムは同じルールを使用して平準化されています。あなたが私がそれをするために使っているスニペットを見たら、それは非常に醜いです。

$("li").click(function() { 
    $(this).html(0); 

    //denote the first level 
    $(this).next().html(1); 
    $(this).prev().html(1); 

    //denote the second level 
    $(this).next().next().html(2); 
    $(this).prev().prev().html(2);  

    //denote the third level 
    $(this).next().next().next().html(3); 
    $(this).prev().prev().prev().html(3);  

    //denote the fourth level 
    $(this).next().next().next().next().html(4); 
    $(this).prev().prev().prev().prev().html(4);  
}); 

私は絶対に嫌いです。私のコラムの数が増えたら、私は困っています。私は、ツリー構造(つまり、.closest("li")のようなもの)とそれ以下を調べるために何かきちんとしたものが必要です。 すべての列で、メイン列が変更されると、特定のレベルのマークアップを取得します。

+0

Felixが言っているように、兄弟を横断することだけに興味があるので、質問のタイトルを変更する必要があります。あるいは、私たちはその質問を理解していません。 – unludo

答えて

3

あなたはprevAll[docs]nextAll[docs]を使用することができます。

$(this).prevAll().each(function(i) { 
    $(this).text(i+1); 
}); 

$(this).nextAll().each(function(i) { 
    $(this).text(i+1); 
}); 

DEMO

ところで。あなたは木を上ったり下ったりしません。あなたはいつも同じレベルにとどまっています。

+0

エレガンスとインデックス引数の使用のための+1 – techfoobar

+0

@Starx:私はあなたが意味することを理解していません。 –

+0

.next()、.nextAll()はjqueryの関数をトラバースしていませんか?とにかく、彼らは私のために働いています。ありがとう。ところで、.nextAll()と.prevAll()を組み合わせる方法はありますか? – Starx