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

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

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

 

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

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

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

有没有办法我可以选择文本框而不必使用它的ID? 另外,我知道您可以按类名选择,但如果您选择的控件没有类,则没有多大帮助。

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

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

你想要做的是:

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

或者您可以将类或自定义属性添加到您可以选择的文本框中

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

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

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

但就像happytime harry所说的那样,如果您正在使用Web表单和jquery,可能需要添加一个类。

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

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

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

http://docs.jquery.com/Selectors

jQuery通配符选择器是你可能在这里缺少的。

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

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

您可以使用元素[id $ = Identifier]表示法,该表示法查找以您指定的文本结尾的id(它是您在ASPX标记中指定的ID)。 下面是一个说明如何使用它的示例(请参阅幻灯片#30): 使用ASP.NET AJAX和jQuery构建Intranet应用程序 。

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