的jQuery
var myID = new Array("A1","B2");
$.each($(".tab"), function(index,value) {
var id = value.attr('id'); //error here :(
if(id == myID[index])
id.addClass('sel');
}
HTML
<div class="tab" id="A1"></div>
<div class="tab" id="A2"></div>
<div class="tab" id="A3"></div>
<div class="tab" id="B1"></div>
<div class="tab" id="B2"></div>
<div class="tab" id="B3"></div>
我想在这里实现的是,我想将类添加到与数组myID
匹配的html中。我上面的代码在行var id = value.attr('id');
上引发了错误。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:4)
您可以使用$.fn.each代替$.each - 任何一个都可以让您使用this
关键字或第二个参数(value
)来引用DOM元素
var myID = new Array("A1","B2");
$(".tab").each( function(index, value) {
this == value; //true
var id = this.id; //Property access is faster than attr or prop
if(id == myID[index])
$(this).addClass('sel'); //addClass gets called on a jQuery object, not a string
});
或者,您可以迭代数组并直接添加类:
var myID = ["A1", "B2"]; //or new Array(...);
$.each(myID, function(index, value) {
$("#"+value).addClass("sel");
});
答案 1 :(得分:3)
$.each
遍历jQuery对象的数字属性,这些属性实际上是纯DOM元素。将其更改为
var id = value.id;
并使用
$(value).addClass('sel');
添加课程。
答案 2 :(得分:1)
所有其他答案都未能解决另一个问题id.addClass('sel');
。
id
将是一种原始类型,因此不会有addClass
方法。
var myID = new Array("A1","B2");
$.each($(".tab"), function(index,value)
{
var id = $(value).attr('id'); //change here
if(id == myID[index])
$(value).addClass('sel'); //also, a change here
}
答案 3 :(得分:0)
试
var myID = new Array("A1","B2");
$.each($(".tab"), function(index,value) {
var id = $(this).attr('id');
if(id == myID[index]){
id.addClass('sel');
}
}
答案 4 :(得分:0)
var id = value.attr('id'); //error here :(
应该是
var id = $(value).attr('id'); //error here :(
答案 5 :(得分:0)
您的错误来自于在jquery包装器中没有忽略“value”。
id = $(value).attr ("id");
或者您可以绕过jquery并执行:
id = value.id;
使用jquery添加一个类需要:
$(value).addClass("sel");
答案 6 :(得分:0)
或者你可能只是做
var myID = new Array("A1","B2");
for (var id in myID) {
$("#" + id).addClass("sel");
}