我刚刚开始在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。
答案 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)
有很多选择器可供使用......也许你想要做的就是添加一个类。
答案 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控件