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 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何跳出当前jquery.each()函数循环

JQuery之each函数详解

Jquery之each函数详解

jquery中.map与each的区别?

jQuery.each()的5个案例

怎么用JQuery的each函数循环去掉一个ul里面li的样式