代码之家  ›  专栏  ›  技术社区  ›  Jagd Dai

在ASP.NET中使用jquery按ID属性选择

  •  13
  • Jagd Dai  · 技术社区  · 16 年前

    我刚开始在vs 2008中使用jquery,到目前为止我很喜欢它!但是,我对应该如何使用jquery来选择网页上的ASP.NET控件感到困惑。

    例如,我有以下代码(只是一个模型):

    <asp:textbox id="txtSomeData1" runat="server" text="Some Data!!"></textbox>
    

    现在,如果我想使用jquery来选择文本框并将其文本更改为“更多数据!!”,那么我必须做如下的事情:

    $('input#ctl00_ContentPlaceHolder1_txtSomeData1').val('Some More Data!!');
    

    坦率地说,这很烦人,因为我不想在控件呈现到网页后再搞清楚它的ID是什么(ctl00_ContextPlaceholder…废话)。

    有没有一种方法可以选择文本框而不必使用其ID?另外,我知道您可以按类名选择,但是如果您选择的控件没有类,这就没有多大帮助。

    我是不是错过了什么?

    只是重申一下:我不想用类来选择输入标记!!我想使用ID“txtsomedata1”,而不是呈现给网页的长ID。

    9 回复  |  直到 16 年前
        1
  •  14
  •   Jaime    16 年前

    您要做的是:

    $("input[id$='_txtSomeData1']").val().....
    

    或者您可以向文本框添加一个类或自定义属性,您可以在该文本框中选择

        2
  •  7
  •   BlackTigerX Borut Tomazin    16 年前

    如果javascript在同一.aspx文件上,则可以执行以下操作:

    $('<%= txtSomeData1.ClientID %>').val('Some More Data!!');
    
        3
  •  1
  •   Max Schmeling    16 年前

    这是社区对ASP.NET Web表单的一大抱怨。在ASP.NET 4.0中,你可以控制你的ID,就像用原始HTML写的一样。或者,如果没有.NET 4.0,您可以使用ASP.NET MVC,在大多数情况下,它不使用服务器控件,因此不会出现问题。

    但是正如HappytimeHarry所说,如果你正在使用web表单和jquery,那么添加一个类可能是你想要的。

        4
  •  1
  •   Vdex    16 年前

    如果要将javascript外部化到它自己的.js文件中,则会遇到ID中的硬编码(最有效)、一些正则表达式选择器或使用低效的按类名选择器。

    但是,如果它与.NET控件在同一个文件中,则可以始终使用 $('<%=txtSomeData1.ClientID %>')

        5
  •  0
  •   mothmonsterman    16 年前

    有很多选择器要使用…也许你想增加一个类。

    http://docs.jquery.com/Selectors

        6
  •  0
  •   JB King    16 年前

    jQuery Wildcard Selectors 你可能在这里失踪了。

        7
  •  0
  •   psychotik    16 年前

    您可以向任何控件添加“marker”类,这些控件的唯一用途是在jquery选择器中使用。 在树的继承权(比如 "$(element).children('.myClass').show()" 如果没有ID,这可能是一个很好的方法。

    顺便说一句, http://visualjquery.com/ 是查看jQueryAPI等的好方法。

        8
  •  0
  •   Alek Davis    16 年前

    您可以使用元素[id$=identifier]表示法,它查找以您指定的文本结尾的ID(它是您在ASPX标记中指定的ID)。下面是一个示例,说明如何使用它(请参见幻灯片30): Building intranet applications with ASP.NET AJAX and jQuery .

        9
  •  0
  •   user3615318    8 年前

    请使用以下语法: $(“[id*=txtsomedata1]”)以引用任何ASP控件

    推荐文章