0

我不再确定我为什么要这样做。我在某处读到我应该同时设置类和类名

为什么两者都有?为什么不只是“类”。我只是想理解这一点,因为“类”似乎每件事都可以正常工作。

$(e).attr('class','highlightMe');
$(e).attr('className','highlightMe');

- -更新 - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------

那么,如果我想先清除所有课程?可能不止一个......我会做这样的事情吗?

$(e).removeClass();
$(e).addClass('highlightMe');

- -更新 - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------

这就是我最终做的,它似乎工作正常......到目前为止

attr初始化类...摆脱我可能在那里的其他类

addClass添加更多类

我无法使用removeClass,因为我没有通过 ID 引用元素

$(.base123).attr('class','base123');
$(.base123).addClass('highlightMe blinkMe');
4

4 回答 4

7

两者都是错误的,well wrong 是一个强词,还有更优化的方法,例如:使用 jQuery,您只需要addClass()。如果一个类已经附加到元素上,那么这不会做任何事情,如果不是,它将添加它。为了解决您的更新,调用.removeClass()(不带参数)将删除一个元素(或多个元素)上的所有类

于 2013-04-05T19:47:00.610 回答
2

使用addClass方法将类设置为元素。

$(e).addClass('newClassName');

请务必注意,此方法不会替换类。它只是添加类,将其附加到任何可能已经分配给元素的类

如果要添加多个类,可以用空格分隔它们。

$("#theElementID").addClass("clsActive clsPremium");
于 2013-04-05T19:47:40.723 回答
1

每个人都建议使用这些方法(您应该这样做),但这并不能回答您的问题!

真正的答案是:class在使用.attr()jQuery 的方法className时使用,在使用.prop()方法或纯 JavaScript 时使用。

Javascript 将类存储为element.className避免关键字冲突,但 using$(element).attr('class')实际上会更改 HTML 属性(链接到 DOM 元素的 className 属性,因此它们保持同步)。

编辑:回答您的更新

使用e.className=''or $(e).attr('class','')or or $(e).prop('className','')or just $(e).removeClass()(无参数)从元素中清除类。

于 2013-04-05T20:04:22.163 回答
0

.attr('class', 'foo')将清除目标元素上设置的任何其他类。如上所述,.addClass('foo')正如它所建议的那样,将类添加到您的目标元素,从而保留当前设置的任何其他元素。

然而

我想你可能会问,与此有关:

$('<div />', {'class' : 'bar});对比$('<div />', {className : 'bar'});

它们在情感上是相同的——className与 jQuery 无关,它只是普通的 Javascript。

所以,$(foo).attr('class', 'bar'); 简直就是

$(foo).className = 'bar';

或者更确切地说:

$(foo).setAttribute('class', 'bar');

或者确切地说:

document.getElementById('foo').className = 'bar';

document.getElementById('foo').setAttribute('class', 'bar');

于 2013-04-05T19:53:41.013 回答