Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET中使用JQuery按ID属性选择_Asp.net_Jquery - Fatal编程技术网

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

在ASP.NET中使用JQuery按ID属性选择,asp.net,jquery,Asp.net,Jquery,我刚刚在VS2008中开始使用JQuery,到目前为止我很喜欢它!但是,我对如何使用JQuery来选择网页上的asp.net控件感到困惑 例如,我有以下代码只是一个模型: <asp:textbox id="txtSomeData1" runat="server" text="Some Data!!"></textbox> 坦白地说,这很烦人,因为我不想在控件呈现到网页ctl00_ContextPlaceHolder后,再去弄清楚它的id是什么。。。废话废话 有没有一种方

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

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

<asp:textbox id="txtSomeData1" runat="server" text="Some Data!!"></textbox>
坦白地说,这很烦人,因为我不想在控件呈现到网页ctl00_ContextPlaceHolder后,再去弄清楚它的id是什么。。。废话废话

有没有一种方法,我可以选择文本框而不必使用它的id?另外,我知道您可以按类名进行选择,但如果您选择的控件没有类,则这并没有多大帮助

我是不是错过了什么


只是重申一下:我不想使用类来选择输入标记!!我想使用id txtSomeData1,而不是呈现到网页的长id。

有很多选择器可供使用。。。也许你想添加一个类


是您在此处可能缺少的内容。

您要做的是:

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

或者,您可以在文本框中添加一个类或自定义属性,您可以在该文本框中选择该属性。这是社区对ASP.NETWeb表单的一大抱怨。在ASP.NET4.0中,您可以重新控制您的ID,就像是用原始HTML编写的一样。或者,如果没有.NET4.0,您可以使用ASP.NETMVC,它在很大程度上不使用服务器控件,因此不会出现问题


但正如happytime harry所说,如果您使用web表单和jquery,添加类可能是您想要的。

您可以将“标记”类添加到任何控件中,该控件的唯一用途是在jquery选择器中使用。 这与导航树继承权类似$element.children.myClass.show可能是一种在没有ID的情况下实现这一点的好方法


顺便说一句,这是查看jQuery API等的好方法。

您可以使用元素[id$=Identifier]表示法,它查找以您指定的文本结尾的id,这是您在ASPX标记中指定的id。下面是一个演示如何使用它的示例,请参见幻灯片30:。

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

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

如果要将JavaScript外部化到它自己的.js文件中,则必须使用id最有效的硬编码、一些正则表达式选择器或使用低效的按类名选择器


但是,如果它与.NET控件位于同一文件中,则始终可以使用$

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

Awesome!我不知道4.0不会有令人讨厌的id。这是个好消息。VisualJquery很棒。要是他们能把它更新到现在的版本就好了,这个版本已经发布了6个月了……我不能让它工作,但我想这就是我要找的!但是我还没有尝试自定义属性。$=是通配符匹配吗?这正是我尝试的:$input[id$=''U txtSomeData1.val“更多数据!!”;您过早地关闭了双引号。$=查找以指定值结尾的字符串…尝试$input[id$=''U txtSomeData1'].val“更多数据!!”;哦,糟了!我也错过了结尾括号。一定需要更多咖啡因或其他东西。引用数据绑定控件中的元素时要小心,例如,如果您将_txtSomeData1放在数据绑定控件的项模板中,如Repeater、DataGrid等,因为在这种情况下,选择器将返回多个元素。如果您必须更改生成页面中元素的ID,您必须更改asp端的输出。因此,这更像是一个asp问题,而不是一个jquery问题。相应地对标题进行了编辑。我在js文件中有javascript,我可能会保持这种方式,但我必须承认您的解决方案对它有一定的吸引力。JavaScript在它自己的文件ie中-不显眼。但正如我对Vdex所说的,它是一个非常吸引人且易于使用的解决方案;然而,它不是我正在寻找的解决方案。实际上,这将是$.val“更多的数据!!”;注意符号-这是我有时会忘记的东西。我使用的一种技术是将屏幕组件映射到javascript对象;在t上aspx文件,您只需将元素id映射到属性,然后就可以在.js文件中使用这些对象
$('<%= txtSomeData1.ClientID %>').val('Some More Data!!');