jQuery addClass不会启动

时间:2012-07-25 21:47:16

标签: jquery

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

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">

控制台正在正确记录,但该类不会添加。

1 个答案:

答案 0 :(得分:1)

所以我认为这只是一个时间问题而且console.log命令会让你失望 - 但命令确实有效,按照你指定的顺序发生。 / p>

举个例子 - Live Demo

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

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

输出 -

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

对于console.log的两次调用,任何小于40毫秒的间隔都会产生相同的输出 - 但这可能因机器和浏览器而异。


我不确定你是否熟悉缓冲输出的概念,而不是在它出现时刷新所有输出......但是这种行为可以在许多不同的语言中看到。我不是JavaScript的专家所以我不是百分之百确定这是什么(输出被缓冲)......