Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 重写.each()循环至于要优化的循环,如何复制$(this.attr())_For Loop_Jquery - Fatal编程技术网

For loop 重写.each()循环至于要优化的循环,如何复制$(this.attr())

For loop 重写.each()循环至于要优化的循环,如何复制$(this.attr()),for-loop,jquery,For Loop,Jquery,我在IE中运行时编写的jquery脚本遇到了一些性能问题,因此我正在尝试以任何可能的方式进行优化。显然,使用for循环要比使用jQuery快得多。这就引出了一个关于for循环中的$(This)等价物的问题。我将循环中的操作简化为只使用attr()函数,因为它解决了我的主要基本问题 我对每个人都这样做(简化) 我试着将其改写为for循环: var existing = $('#existing').find('div'); for(var i = 0;i < existing.length;

我在IE中运行时编写的jquery脚本遇到了一些性能问题,因此我正在尝试以任何可能的方式进行优化。显然,使用for循环要比使用jQuery快得多。这就引出了一个关于for循环中的
$(This)
等价物的问题。我将循环中的操作简化为只使用
attr()
函数,因为它解决了我的主要基本问题

我对每个人都这样做(简化)

我试着将其改写为for循环:

var existing = $('#existing').find('div');
for(var i = 0;i < existing.length;i++)
{
    console.log(existing[i].attr('id'));
}
var existing=$('#existing')。查找('div');
对于(var i=0;i
这是一个错误,说:

Uncaught TypeError: Object #<HTMLDivElement> has no method 'attr'
uncaughttypeerror:对象#没有方法“attr”

要获取元素的id,只需执行以下操作

existing[i].id
请注意,jQuery循环也会更快

existing.each(function(){
  console.log(this.id);
}); 

更一般地说,您不应该使用
attr('id')
,特别是当您关心性能时,因为DOM对象有一个属性
id

,只需执行以下操作即可获取元素的id

existing[i].id
请注意,jQuery循环也会更快

existing.each(function(){
  console.log(this.id);
}); 
更一般地说,您不应该使用
attr('id')
,特别是当您关心性能时,因为DOM对象有一个属性
id

,您需要
existing.eq()
来获取
jQuery
对象,
existing[]
为您提供
DOM
对象。函数
attr()
应该用jQuery对象调用,但不能用DOM(javascript)对象调用

您需要
existing.eq()
来获取
jQuery
对象,
existing[]
为您提供
DOM
对象。函数
attr()
应该用jQuery对象调用,但不能用DOM(javascript)对象调用


.在给出答案之前,我必须问您一个问题,为什么需要对单个元素执行循环,#existing不是Id,因此它是页面上唯一的元素。 你可以这么做

$('#existing').prop('id');  
如果有多个元素,则应使用类或其他属性,如果是这样,则可以使用以下内容:

$.each('.existing',function(index,item){
    console.log(item.prop('id'));
});

最好使用prop()而不是attr(),因为attr已被弃用。

。在给出答案之前,我必须问您一个问题,为什么您需要在单个元素上执行循环,#existing不是Id,因此它是页面上唯一的元素。 你可以这么做

$('#existing').prop('id');  
如果有多个元素,则应使用类或其他属性,如果是这样,则可以使用以下内容:

$.each('.existing',function(index,item){
    console.log(item.prop('id'));
});

最好使用prop()而不是attr(),因为attr已被弃用

请注意,existing只能有一个元素,因为选择器$(“#existing”)使用ID(而不是类)。这个脚本只会回应“现有的”…实际上它将包含一堆东西,我只是把它简化了一点,以便理解我的基本观点。更正。是的,现在它对
。find('div')
:)有意义。请注意,existing只能有一个元素,因为选择器$('#existing')使用ID(而不是类)。这个脚本只会回应“现有的”…实际上它将包含一堆东西,我只是把它简化了一点,以便理解我的基本观点。更正。是的,现在有了
。find('div')
:)这正是我需要的。实际上,我需要使用比attr like.data()更多的方法,这已经修复了我的错误。谢谢,这正是我需要的。实际上,我需要使用比attr like.data()更多的方法,这已经修复了我的错误。