在jQuery中获取多个元素

时间:2012-02-21 11:37:20

标签: jquery

我认为代码非常明显:

 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对象吗?

或者我想做什么工作?

5 个答案:

答案 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函数,例如clickis等,它们没有一个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");
   }
});

http://api.jquery.com/each/