执行
之类的替代方法是什么?$(".myElement").each(function(){
//function
});
在普通的Javascript中?
答案 0 :(得分:6)
这会迭代当前文档中的所有divs
。您可以替换document.getElementsByClassName('someclass')
等,并对其attributes
和values
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;
while(--len){
// use $($all[len]); for jQuery obj
var elem = $all[len];
doWork(elem);
}
//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