0

既存の要素にクラスを追加しようとしていますが、最も単純なコードを試しています。2つのログがまったく同じ要素を返す理由を誰かが知っていますか?

console.log($('.btn-group.archive'));
$('.btn-group.archive').addClass('open');
console.log($('.btn-group.archive'));

私はTwitterBootstrapのドロップダウンメニューを使用しているので、そこから何かが混乱しているかどうかはわかりません。

彼らは戻ります:

<div class="btn-group archive">
    <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
        Select
    </a>
    <ul class="dropdown-menu"><!-- dropdown menu links -->
        <li><a href="#">Item #1</a></li>
        <li><a href="#">Item #2</a></li>
    </ul>
</div>

どこ<div class="btn-group archive">にあるべきか<div class="btn-group archive open">

コンソールは正しくログに記録されていますが、クラスは追加されません。

4

1 に答える 1

1

したがって、これはタイミングの問題であり、console.logコマンドがあなたを失望させていると思います-しかし、コマンドは機能し、指定した順序で発生します

この例を見てください-ライブデモ

<div id="foo"></div>​

​$(function(){
    console.log($("#foo"));
    setTimeout(function(){
      $("#foo").addClass("bar");
      console.log($("#foo"));      
    },40);
});​​​

出力-

[<div id=​"foo">​&lt;/div>​] 
[<div id=​"foo" class=​"bar">​&lt;/div>​] 

40ミリ秒未満の間隔では、両方の呼び出しで同じ出力console.logが得られますが、マシンごと、ブラウザごとに異なる場合があります。


すべての出力をフラッシュするのではなく、出力をバッファリングするという概念に精通しているかどうかはわかりませんが、この動作はさまざまな言語で見られます。私はJavaScriptの専門家ではないので、これが何が起こっているのか(出力がバッファリングされている)を100%確信していません...

于 2012-07-25T21:56:38.943 に答える