2013-04-05 83 views
0

我不知道为什么我这样做。我读的地方,我应该设置类和className为什么设置className和class?

为什么这两个?为什么不只是“阶级”。我只是试图理解这一点,因为每一件事情似乎都适用于“班级”。

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

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

所以如果我想清除所有的类第一?可能会有更多,然后只有一个... 我会做这样的事情?

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

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

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

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

addClass添加更多的类

我不能使用removeClass,因为我并没有被标识引用元素

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

jQuery的'.attr()'模拟所选元素的HTML属性设置。实际上,一个元素可以有多个类,所以jQuery允许你使用专用的'.addClass()'和'.removeClass'方法添加和删除类。 'className'是包含类数据的元素的Javascript属性。 – blint 2013-04-05 19:51:51

+0

如果你想清除所有的类,你可以调用.removeClass()(没有参数)(我已经更新了我的答案来解决这个问题) – 2013-04-05 20:11:54

回答

7

两者都是错误的,以及错误是一个强烈的字眼,也有更优化的方法,如:使用jQuery你只需要。如果一个类已经附加到元素,那么这将不会做任何事情,如果它不是它会添加它。要解决您的更新,请致电.removeClass()(不含参数)将删除元素(或元素)上的所有类。

+0

这个答案的第一句话是不正确的。 '.attr('className')'的确是错的,但'.attr('class')'是正确的。仅仅因为某些东西不是最佳或偏好并不意味着它是错的。 – Travis 2013-04-05 20:49:47

+0

这是一个公平的观点,我已经投票了你的答案,因为它比我最初的“两个错误的”答案走得更远。 – 2013-04-05 21:20:46

2

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

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

重要的是要注意,这种方法并不能代替一个类。它只是添加类,将其附加到任何可能已经分配给元素的元素上

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

$("#theElementID").addClass("clsActive clsPremium"); 
0

.attr('class', 'foo')将消灭目标元素上设置的任何其他类。如上所述,.addClass('foo')会按照其建议将该类添加到目标元素,从而保留当前设置的其他元素。

然而

我想你可能会问什么,必须做这个:

$('<div />', {'class' : 'bar}); VS $('<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');

1

每个人都建议使用these methods(你应该),但不回答你的问题!

真正的答案是:当你使用.attr()方法与jQuery使用class,并使用className当你使用.prop()方法或用普通的JavaScript。

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

编辑:要回答你的更新

二者必选其一e.className=''$(e).attr('class','')$(e).prop('className','')或只是$(e).removeClass()(无参数)从一个元素清除类。

相关问题