jQuery中的jQuery的.each()

时间:2013-08-11 08:56:00

标签: javascript jquery

执行

之类的替代方法是什么?
$(".myElement").each(function(){ 
    //function
});

在普通的Javascript中?

5 个答案:

答案 0 :(得分:6)

这会迭代当前文档中的所有divs。您可以替换document.getElementsByClassName('someclass')等,并对其attributesvalues

执行某些操作
var elements = document.getElementsByTagName('div');
for (var i=0; i<=elements.length; i++) {
    doSomething(elements[i]);
}

这是jsfiddle:http://jsfiddle.net/eszdeypn/

答案 1 :(得分:3)

$(#myElement)

您正在尝试迭代id选择器。 ID 必须在HTML页面中是唯一的。

如果您想要迭代的class or element代码,则可以使用for循环。

var $elems = $('.someClass');
for(var i=0; i< $elems.length; i++ ) {

     // $elems[i] --> Gives you a `DOM` element
     // $elems.eq(i) --> Gives you a `jQuery` object
}

Vanilla Javascript

var elems = document.getElementsByClassName('someClass');

for(var i=0;i< elems.length;i ++) {
    elem[i] // Based on index
}

getElementsByTagName如果你想迭代特定的标签。

getElementsByName - 根据名称属性获取元素。

您还可以使用document.querySelectorAll获取对象列表并迭代它们。

var elems = document.querySelectorAll('.someClass')
  for(var i=0; i<elems.length; i++) {
    elems[i] // Give you DOM object
  }

答案 2 :(得分:0)

var el = $(something);

for (var i = 0; i < el.length; i++) {
    // do something with el[i] or more often with $(el[i])
}

el是一个伪数组(或类似数组的对象),其length[]运算符可以在0...length-1范围内访问。所以你可以做el[0]el[1]等,但要记住el元素不是jquery“对象”,通常它们是DOM元素,所以你不能做{{1 }}。与el[0].text("Hello")方法一样,您必须执行each

这样做甚至是错误的:

$(el[0]).text("Hello");

因为这样每个周期都会重新计算for (var i = 0; i < $(something).length; i++) { // do something with el[i] or more often with $(el[i]) }

答案 3 :(得分:0)

每个函数的替代方法,这里有两个:

设置

var $all = $('*');
var len = $all.length;

1

while(--len){
   // use $($all[len]); for jQuery obj
   var elem = $all[len];
   doWork(elem);
}

2

//reset len for next loop
len = $all.length;
do {
   var $elem = $all.filter(':eq('+ --len + ')');
   doWork($elem);
} while (len);

答案 4 :(得分:-1)

你必须使用for循环。看着 http://www.w3schools.com/js/js_loop_for.asp