【问题标题】:JQuery .each functionjQuery .each 函数
【发布时间】: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);
    });
});

【问题讨论】:

    标签: c# .net asp.net javascript jquery


    【解决方案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);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-10
        • 2010-11-26
        • 1970-01-01
        • 2011-09-04
        • 2023-04-10
        • 1970-01-01
        • 2016-08-06
        • 2012-02-27
        相关资源
        最近更新 更多