2011-08-01 7 views
0

私はJSとjQuery newbですので、私にご負担ください。私はこのスクリプトをややこしいものにしていますが、それは私がやりたいことを正確には行なわず、私はそれを理解できません。基本的な考え方は、リンクをクリックしてslideToggleを使ってdivを開くことです。面倒な部分は、新しいものを開く前に以前に開いたdivを閉じることです。私ができることは、前のdivを隠すことです。前のdivを切り替えようとしているのは、私がdivを特に対象としているのではなく、新しいdivを開く前にすべてのdivを閉じるように指示しているためです。私が実行した別の問題は、同じページのリンクが無効になっているようだが、これは "return false"コマンドによるものと思われるが、ページをクリックしたときにページがスクロールしないようにする方法はわからないそのコマンドを使用しない場合は、スライドリンクをクリックします。助けてくれてありがとう。ここでjQueryで閉じたdivを閉じるslideToggle

は、私が働いているものです:http://jsfiddle.net/NkX2Z/

答えて

1

あなたは、外部リンクの作業をするためにいくつかのより多くのコントロールを行う必要があります。ここ

は、それはあなたが探しているものであれば、実際に私は知らないが、多分それはdiv要素が対応している場合は、ここに条件がチェックします

http://jsfiddle.net/gb9M7/1/

if($("#"+$(this).attr("class")).length && !$("#"+$(this).attr("class")).is(':visible')) 

助けることが、私の解決策であります存在する場合は、そのdivがまだ開かれていないかどうかをチェックします。 ページの状態がifブロックよりも制約を満たしている場合。ここでUPDATE 1

スライド経時コードである:

http://jsfiddle.net/gb9M7/2/

var time = 1200; 
.slideUp(time); 
.slideDown(time); 

UPDATE 2

、ここでリンクをprevend改良版でありますスクロールから'#'までページ玲:

http://jsfiddle.net/gb9M7/3/

if($(this).attr('href') == '#') 
    return false; 
+0

私が探していたものではありませんが、十分に近いものです。 Dalenに感謝します。 – Pieter

0

は、あなたがあなたのページ内のすべてのリンクを選択するために、 '' セレクタを使用しているこの

http://jsfiddle.net/NkX2Z/2/

+0

これはうまくいかないようですが、最後の条件のときにa)を逃しました – Dalen

+0

@Dalen - 期待どおりに動作します。他のリンクは正常に動作します – ShankarSangoli

0

を見てみましょう。そして、falseを返すと、それらのリンクはすべて無効になります。私はdiv要素でリンクをラップして、それにIDまたはクラスを与え、そのリンクだけにイベントをアタッチすることをお勧めします。

あなたが構築しているものはAccordion http://jqueryui.com/demos/accordion/に非常に近いです。多分あなたが望むものは?

関連する問題