2012-03-22 9 views
0

私はチェーン機能を持つ基本的な条件文を持っています。 elseメソッドの後には起動しないshow()のコールバックがあります。コールバックが発火しない条件文

何が間違っていますか?構文??

のthnx

var closeList = $('#west'); 

    $('#menuToggle').click(function(){ 
     var p = $('#west').css('display'); 
     if (p != "block") { 
      $('#contentBox').width('70%', function() { 
       $('#west').show(); // <--THIS DOESNT FIRE!! 
      }); 
     } else { 
      $('#west').hide(); 
      $('#contentBox').width('98%'); 
     } 
    }); 

HTML

<!-- ------------------------- Main Content -------------------- --> 
    <div id="wrapper" class="wrapperPosition"> 

     <div id="west"> 
     </div> 

     <div id="contentBox"> 
      <div id="content" class="contentPosition"></div> 
     </div> 
    </div> 
+0

あなたはHTMLを追加することができますしてください:私のコメントについては詳しく説明し


。 – RubbleFord

+0

@ RubbleFord私はしましたが、私はそれが重要であることを見ません - 他のすべてが動作します。 Thnx – CelticParser

答えて

2

順序ではなく、コールバックでそれらを呼び出します

if (p != "block") { 
    $('#contentBox').width('70%'); 
    $('#west').show(); 
} 

問題が.width()が受け入れるオプションを持っていないということです値と関数の両方、どちらか一方のみ:

.width(value) 
.width(function(index, width)) 

したがって、値とペアにすると、その関数は無視されます。

if ($('#west').is(':hidden')) { 
    $('#contentBox').width('70%'); 
    setTimeout(function() { 
     $('#west').show(); 
    }, 10); 
} 
+0

Thnxだが、それはコンテンツボックスを段階から離れて戻してしまう。どのような順序でショー()をしても、最初に起動してcontentBoxをステージから外し、私が望むポジションに移動します。 – CelticParser

+0

@Andaero 'show'をわずかに遅らせる必要がある場合、' setTimeout'を小さなタイムアウトで使用する必要があります: 'setTimeout(function()#west ')。show();}、10);'。また、条件テストは何ですか? '#west'が隠されているかどうか?もしそうなら、 'if($( '#west')。is( ':hidden'))'を試してください。 (更新コードの編集を参照) –

+0

Thnx !! TotalltはsetTimeout関数を忘れていました。 – CelticParser