2

所以我正在阅读的是,当向没有分配任何类的元素添加类时,仍然使用 addClass() 方法而不是 attr()。

例如,使用:

.addClass('myclass')

.attr('class','myclass')

我找不到任何与 addId('myid') 等效的东西来添加 id 选择器,它是否存在或者 attr() 是添加 id 选择器的最佳方法?

我知道 id 是唯一的,我的问题背后的逻辑是 addClass() 比 attr() 快。

所以我的问题是,是否有比 attr() 更有效的方法来创建 id。

4

3 回答 3

1

直接回答

不,addId()不存在addClass()且不一样attr()

在 HTML 中,一个class属性可以包含多个值,<div class="tall fat brown">Someone</div>因此 jQuery 的函数addClass()有助于向类属性添加一个值而不是更改它。类似地,函数toggleClass()和“removeClass()”帮助操作它们。

但是该函数attr()只会操纵属性并直接更改它。

例如:

<div id="person">someone</div>

以及以下 jQuery 语句

$("#div").addClass("tall"); // This will create the class attribute and add tall 
$("#div").addClass("fat");  // This will append fat to the existing class and make "tall fat"
$("#div").addClass("brown"); // likewise

.addClass()只会附加类名。如果同样需要通过使用attr()你必须做

$("#div").attr('class', 'tall');
$("#div").attr('class', 'tall fat');
$("#div").attr('class', 'tall fat brown');

或者,您可以使用修改属性

$("#div").attr('class', function(i, className) {
    return className + " brown";
});

因为ids 有一个值需要修改或改变,所以一个函数就像addId()attr('id', 'idvalue') 会做的那样。

于 2013-06-20T23:22:45.797 回答
1

的行为.addClass()不同于.attr()

您可以将.addClass()现有类添加到先前添加的类中,但.attr()会覆盖现有类。

此外,每个元素只有一个 id,因此提供一种使用addId().

于 2013-06-20T23:26:36.283 回答
0

添加类将确保附加类名

.attr('class','myclass') 覆盖现有的类myclass

<div class="a b c"> </div>

$('a.div').addClass('myclass');

你的 div 看起来像这样

<div class="a b c myclass"> </div>

但是,如果您将其添加为属性,它将覆盖其他类

$('a.div').attr('class', 'myclass');

   <div class="myclass"> </div>

所以现在你不能选择元素,$('div.a')因为那个 div 不再有问题的类..

于 2013-06-20T23:22:21.397 回答