1

我的假设是 .each() 函数在处理大量元素时比 for 循环慢。

我的问题是 for 循环我无法在循环遍历元素时对其进行操作。我可以用 .each() 很好地做到这一点。这可能是一个简单的答案。

Javascript:

var element = $('#element h3');
var length = element.length;
var newHtml;

for(i=0;i<length;i++){

  newHtml = element[i].html();

  ...test newHtml
}

当我尝试抓取元素的 .html() 时,代码会中断。我看过一些帖子,解释这是用 for 循环遍历元素的方法,但从未解决从它们中获取信息和操作它们的问题。

任何帮助都感激不尽!

4

3 回答 3

6

element[i]是原始 DOM 元素,而不是 jQuery 对象。(就像this.each()

你想要element.eq(i),它将返回一个包装第ith元素的 jQuery 对象。

于 2013-04-03T17:54:11.383 回答
0

h3如果您正在寻找一种过度优化的解决方案来一次性处理大量数据,请忘记jquery.

var element = document.getElementById('element');
var headings = element.getElementsByTagName('h3');
var length = headings.length;
var newHtml;

for(i=0;i<length;i++){

  newHtml = headings[i].innerHTML;

  ...test newHtml
}
于 2013-04-03T18:28:52.233 回答
0

您正在将 jQuery 与 javascript 混合在一起,就像element[i].html(); 您的代码中应该是这样的

function myfunction(){
    var element = document.getElementsByName('element');
    var length = element.length;
    var newHtml;
    for(i=0;i<length;i++){
        newHtml = element[i].innerHTML;
    }
}

请注意 document.getElementById() 只返回一个结果,因此您必须将“元素”放在名称 attr 中。坦率地说 .each 更容易

于 2013-04-03T18:47:46.157 回答