jQuery .each 函数
Posted
技术标签:
【中文标题】jQuery .each 函数【英文标题】:JQuery .each function 【发布时间】:2010-10-12 20:06:20 【问题描述】:我的 ASP.NET 页面上有一堆图像,如下所示:
for (int i = 0; i < 3; i++)
Image image = new Image();
image.ID = "UpdateStatus";
image.CssClass = "imageCss";
image.ImageUrl = "Bump.GIF";
this.Controls.Add(image);
我想循环浏览每张图片。
为什么这不起作用?即输出“功能1”但不输出“功能2”
$(document.body).click(function ()
console.log('Function 1');
$('imageCss').each(function()
console.log('Function 2');
);
);
为什么这不起作用?即“功能 1”输出,“功能 2”输出 ONCE。为什么不是 3 次?
$(document.body).click(function ()
console.log('Function 1');
$(''#UpdateStatus'').each(function()
console.log('Function 2');
);
);
这很好用,但我无法访问“this”,它为 NULL。我需要能够引用当前图像。
$(document.body).click(function ()
console.log('Function 1');
$.each('#UpdateStatus', function() //Or when I use 'imageCss'
console.log('Function 2');
console.log(this);
);
);
【问题讨论】:
【参考方案1】:(1) 您的 jQuery 调用 $('imageCss')
不是有效的选择器。您需要在类名前加上“。”表示您要选择具有“imageCss”类的元素:
$('.imageCss')
(2) ID 必须是唯一的。当您在 ASP.NET 中的服务器上设置 Control.ID = "foo" 时,即设置控件的 服务器端 ID。在 html 中生成的客户端 ID 将是一个独特的、长而丑陋的字符串,例如 ctl00_ctl01_pnlMain_foo1
。您最好的选择是使用类选择器。您可以使用空格将多个类应用于单个元素:
myImage.CssClass = "image otherclass";
$('.image')
和 $('.otherclass')
都会正确选择元素。
(3) this
不存在,因为 closures。函数在调用函数的对象的上下文中执行,所以this
就是那个对象。
或者,在您的情况下,您的函数看起来并没有在任何对象的上下文中执行,所以我不确定您期望 this
是什么。
【讨论】:
【参考方案2】:要引用当前图像,请执行以下操作:
$.each('#UpdateStatus', function(i, val)
console.log('Function 2');
console.log(val);
);
【讨论】:
以上是关于jQuery .each 函数的主要内容,如果未能解决你的问题,请参考以下文章