2016-08-17 3 views
0

私はここでフィーバーを作成しましたhttps://jsfiddle.net/c2gjh43j/3/。私は、ターゲットの「脇」兄弟が表示されていないかどうかを確認するためにラインif文がjQuery ':visible'を使用してブール値を返さない

if (!target.siblings("aside").is(":visible")) { 

を使用していますが、それは常に私のJavascriptを「脇」要素を示した後でも、trueを返します。このため、私のelse文は実行されません。あなたはフィドルのボックスをクリックすると隠された要素が表示されますが、表示されているときはそのボックスをクリックして隠すことができるはずです。私は間違って何をしていますか?

+0

$("aside").hide(); 

をちょうどそれにリンクし、期待していない、あなたの質問に、あなたの "* [MCVE] *" のコードを投稿してください私たちに従ってください。 –

答えて

1

あなたは多分あなたの優先順位を混ぜ合わせて、あなたの心にそれほどのものがあるなら、あなたは "else"ステートメントにコマンドを追加するのを忘れました(クラスの非表示と削除)。また、私は、この行の下の「ショー」を削除:

$(this.resource).removeClass("active"); 

私はあなたのコードを修正し、私はあなたが望むように、この作品を願っています。その他のファイルはのみのjsファイルは、以下のように変更され、無傷である:「TO-DO:」

Services = { 
    resource: "#resources-grid .resource", 
    resourceTrigger: "#resources-grid .resource .full-link", 
    description: ".description", 
    init: function() { 
     $(this.resourceTrigger).click(this.toggleResource.bind(this)); 
    }, 

    toggleResource: function(e) { 
     $(this.resource).removeClass("active"); 

     var target = $(e.target); 

     if (!target.siblings("aside").is(":visible")) { 
      console.log("yes"); 

      // Edit START 
      $("aside").hide(); 
      // Edit END 

      target.siblings("aside").show(); 
      target.parents(".resource").addClass("active"); 
     } else { 
      console.log("no"); 
      target.siblings("aside").hide(); 
      target.parents(".resource").removeClass("active"); 
     } 
    }, 
} 
Services.init(); 

側の注意点として、タスクを使用してコードをコメントしようとあなたのコードをインデント。

私はあなたを助けました!

編集: はこの追加:

target.siblings("aside").show(); 
+0

あなたのコードは正しい方向に進んでいますが、最初に開いた状態で2番目のボックスをクリックするとどうなるかがわかります。フィデルドはhttps://jsfiddle.net/c2gjh43j/4/で更新されました。開いているときにクリックすると最初のボックスが閉じる必要がありますが、別のボックスがクリックされた場合も同様です – JordanBarber

+0

本当に、これを確認するのを忘れていました。私は働くコードをできるだけ早く戻すでしょう。それは夜ここと明日私は仕事に行く必要がありますが、明日は最新の私は更新を投稿します。 –

関連する問題