使用ASP.NET中的JQuery按ID属性选择

时间:2009-08-13 21:50:22

标签: asp.net jquery

我刚刚开始在VS 2008中使用JQuery,到目前为止我喜欢它!但是,我对如何使用JQuery来选择网页上的asp.net控件感到困惑。

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

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

现在,如果我想使用JQuery选择文本框并将其文本更改为“Some More Data !!”,那么我将不得不这样做:

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

坦率地说,这很令人烦恼,因为我不想弄清楚在将它呈现给网页之后必须弄清控件的id是什么(ctl00_ContextPlaceHolder ......等等等等。)

有没有办法可以选择文本框而不必使用它的id?另外,我知道您可以按类名选择,但如果您选择的控件没有类,则无济于事。

我在这里错过了一些东西吗?

只是要重复:我不想使用类来选择输入标签!!我想使用id“txtSomeData1”,而不是使用呈现给网页的长ID。

9 个答案:

答案 0 :(得分:14)

您要做的是:

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

或者您可以在您可以在

上选择的文本框中添加类或自定义属性

答案 1 :(得分:7)

如果javascript位于同一个.aspx文件中,您可以执行以下操作:

$('<%= txtSomeData1.ClientID %>').val('Some More Data!!');

答案 2 :(得分:1)

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

但是就像happytime harry所说的那样,如果你正在处理web表单和jquery,可能想要你想要一个类。

答案 3 :(得分:1)

如果要将JavaScript外部化为自己的.js文件,则会遇到id(最有效)的硬编码,某些正则表达式选择器或使用低效的类名选择器。

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

答案 4 :(得分:0)

有很多选择器可供使用......也许你想要做的就是添加一个类。

http://docs.jquery.com/Selectors

答案 5 :(得分:0)

jQuery Wildcard Selectors是你在这里可能缺少的。

答案 6 :(得分:0)

您可以将'标记'类添加到任何控件,其唯一目的是在jQuery选择器中使用。 这一点,以及导航树heirarchy(像"$(element).children('.myClass').show()"这样的东西可能是没有ID的好方法。

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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