所以我正在阅读的是,在没有分配任何类的元素中添加类时,仍然使用attr()上的addClass()方法。
例如,使用:
.addClass('myclass')
比
更有效.attr('class','myclass')
我找不到与addId('myid')相同的东西来添加id选择器,它是否存在或attr()是添加id选择器的最佳方式?
我认为id是唯一的,我的问题背后的逻辑是addClass()比attr()更快。
所以我的问题是,如果创建一个比attr()更有效的方法。
答案 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不再有问题类了。