我认为代码非常明显:
elements = $("input.newEntry:not([name^='counter'])");
for (e in elements) {
if (e.css('background-color') == 'rgba(255, 0, 0, 0.6)')
alert("fire event");
}
我得到的错误是e.css()不是函数。我可以以某种方式将e转换为DOM对象吗?
或者我想做什么工作?
答案 0 :(得分:4)
elements = $("input.newEntry:not([name^='counter'])");
elements.each(function()
{
if ($(this).css('background-color') == 'rgba(255, 0, 0, 0.6)')
alert("fire event");
});
另一方面,我不认为与background-color
比较,这是一个好主意。你不能上课吗?
答案 1 :(得分:3)
elements
是一个jQuery集合(由$
函数返回),所以最好用jQuery本身为你提供的函数来处理它。例如,如果要迭代jQuery集合,请使用.each()
。
elements = $("input.newEntry:not([name^='counter'])");
elements.each(function (i, e) {
if ($(e).css('background-color') == 'rgba(255, 0, 0, 0.6)')
alert("fire event");
}
});
此外,在each()
中,this
将始终引用当前元素,因此您甚至可以执行此操作:
elements.each(function () {
if ($(this).css('background-color') ...
});
答案 2 :(得分:1)
不要像这样迭代列表。
使用:
for(var i = 0; i < elements.length; i++) {
var e = elements[i];
...
}
(詹姆斯建议的$.each
)
你当前的for不仅会产生数组中的所有项目,还会产生整个对象的所有成员,其中包括jQuery函数,例如click
,is
等,它们没有一个css
函数。
答案 3 :(得分:1)
使用jQuery.each:
elements = $("input.newEntry:not([name^='counter'])");
elements.each(function (index, element) {
var e = $(element);
if (e.css('background-color') == 'rgba(255, 0, 0, 0.6)')
alert("fire event");
});
elements
是一个jQuery对象。如果循环遍历它,您还可以获得该对象的函数和属性,而不仅仅是元素的索引。
答案 4 :(得分:0)
$("input.newEntry:not([name^='counter'])").each(function() {
if ($(this).css('background-color') === 'rgba(255, 0, 0, 0.6)') {;
alert("fire event");
}
});