addClass vs attr并创建一个ID

时间:2013-06-20 23:19:43

标签: jquery

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

例如,使用:

.addClass('myclass')

更有效
.attr('class','myclass')

我找不到与addId('myid')相同的东西来添加id选择器,它是否存在或attr()是添加id选择器的最佳方式?

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

所以我的问题是,如果创建一个比attr()更有效的方法。

3 个答案:

答案 0 :(得分: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";
});

其中id有一个值需要修改或更改,因此像addId()这样的函数可以完全执行attr('id','idvalue')。

答案 1 :(得分:1)

.addClass()的行为与.attr()不同。

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

此外,每个元素只有一个id,因此提供一种方法来添加另一个像addId()这样的函数是没有意义的。

答案 2 :(得分:0)

添加课程将确保附加className

但是

.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不再有问题类了。