0

我正在尝试向预先存在的元素添加一个类,并且我正在尝试最简单的代码。任何人都知道为什么这两个日志会返回完全相同的元素?

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

可能值得一提的是,我正在使用 Twitter Bootstrap 的下拉菜单,所以我不知道那里是否有什么问题。

他们回来了:

<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 回答