Javascript CSS类';加倍';在JS中操作时

Javascript CSS类';加倍';在JS中操作时,javascript,css,Javascript,Css,我正在尝试向表中的可排序列添加箭头 第一次使用时效果很好,然后将类加倍 头传感器->头传感器向下->头传感器向上->头传感器向下 有人知道为什么会这样吗?(出于某些令人恼火的原因,我还必须删除一个“header”类。) 如果没有更多的上下文,很难说,但我不认为代码所做的正是您认为它所做的。试试这个: var $this = $(this); $this.removeClass('header'); if ($this.hasClass('headerUnSort')) { $this.

我正在尝试向表中的可排序列添加箭头

第一次使用时效果很好,然后将类加倍

头传感器->头传感器向下->头传感器向上->头传感器向下

有人知道为什么会这样吗?(出于某些令人恼火的原因,我还必须删除一个“header”类。)


如果没有更多的上下文,很难说,但我不认为代码所做的正是您认为它所做的。试试这个:

var $this = $(this);
$this.removeClass('header');

if ($this.hasClass('headerUnSort')) {
    $this.removeClass('headerUnSort');
    $this.addClass('headerSortDown');

} else if ($this.hasClass('headerSortDown')) {
    $this.removeClass('headerSortDown');
    $this.addClass('headerSortUp');

} else if ($this.hasClass('headerSortUp')) {
    $this.removeClass('headerSortUp');
    $this.addClass('headerUnSort');
}
或者,这应该快得多:

var $this = $(this);
$this.removeClass('header');

if ($this.hasClass('headerUnSort')) {
    this.className = 'headerSortDown';

} else if ($this.hasClass('headerSortDown')) {
    this.className = 'headerSortUp';

} else if ($this.hasClass('headerSortUp')) {
    this.className = 'headerUnSort';
}

Element.className是一个包含所有Cals的字符串,因此它可以是“class1 class2”。然后比较应该是“has this class”(参见),而不是“has only this class”。然后使用removeClass仅用于该类,以保持清晰,并在以后打算持久化一个类时意外发出“呜呜”声。“快得多”。。不。没有明显的性能差异。我可以点击约8cps。嗯,不,这对用户来说不会有明显的区别。但是,如果你对它进行性能测试,它的计算复杂度要低得多,运行速度也会更快。。“快多了”。。没有/没有关系。既然使用了任何jQuery,那么最好完全使用它。虽然我会将$(this)捕获为局部变量,但为了清晰起见,我使用了不同的名称。我在下载的一个表分类器中发现了这个问题。不管什么原因,它都在扰乱我的课堂!谢谢你的帮助。
var $this = $(this);
$this.removeClass('header');

if ($this.hasClass('headerUnSort')) {
    this.className = 'headerSortDown';

} else if ($this.hasClass('headerSortDown')) {
    this.className = 'headerSortUp';

} else if ($this.hasClass('headerSortUp')) {
    this.className = 'headerUnSort';
}