Javascript 在运行时获取用户控件中的用户控件id

Javascript 在运行时获取用户控件中的用户控件id,javascript,jquery,asp.net,user-controls,Javascript,Jquery,Asp.net,User Controls,是否可以使用javascript或jquery从控件获取分配给用户控件的ID 谢谢您可以在usercontrol上放置一个类,然后使用类似$(“.myUC”).attr(“id”)的东西您可以在usercontrol上放置一个类,然后使用类似$(“.myUC”).attr(“id”)的东西ASP.NET通常做的是在控件ID前面加上一个字符串,该字符串用于确定实际控件在ASP.NET控件树中的位置 考虑到这一点,我通常会使用jQuery的“ends With”选择器在运行时获取完整的ASP.NET

是否可以使用javascript或jquery从控件获取分配给用户控件的ID


谢谢

您可以在usercontrol上放置一个类,然后使用类似$(“.myUC”).attr(“id”)的东西

您可以在usercontrol上放置一个类,然后使用类似$(“.myUC”).attr(“id”)的东西ASP.NET通常做的是在控件ID前面加上一个字符串,该字符串用于确定实际控件在ASP.NET控件树中的位置

考虑到这一点,我通常会使用jQuery的“ends With”选择器在运行时获取完整的ASP.NET解析ID

比如:

// get a handle on your original control
var myControl = $('[id$="<myOriginalId>"]');
// and then access it's properties
var myRuntimeId = myControl.eq(0).attr('id');
//获取原始控件的句柄
var myControl=$('[id$='']);
//然后访问它的属性
var myRuntimeId=myControl.eq(0.attr('id');

正如您最有可能想象的那样,当您在表单的不同位置使用了具有相同ID的UserControl时,这并不能解决问题。为了满足我的业务需要,我只是在这里和那里做了一些调整(可能是使用
.eq()
函数)。

ASP.NET通常做的是在控件ID前面加上一个字符串,该字符串用于确定实际控件在ASP.NET控件树中的位置

考虑到这一点,我通常会使用jQuery的“ends With”选择器在运行时获取完整的ASP.NET解析ID

比如:

// get a handle on your original control
var myControl = $('[id$="<myOriginalId>"]');
// and then access it's properties
var myRuntimeId = myControl.eq(0).attr('id');
//获取原始控件的句柄
var myControl=$('[id$='']);
//然后访问它的属性
var myRuntimeId=myControl.eq(0.attr('id');

正如您最有可能想象的那样,当您在表单的不同位置使用了具有相同ID的UserControl时,这并不能解决问题。我只是在这里和那里加入一些调整(可能是使用
.eq()
函数),以满足我的业务需要。

这可能有助于您从不同的角度来看待它: 在.Net中,您可以使用
myControl.ClientID
获取生成的ID

如果你把它放在一个javascript变量中——我知道它不整洁——你就可以很容易地获取它

<!--mypage.aspx-->
<script>
  var myIdVar = "<%=myControl.ClientID%>";
  if(myIdVar == "foo")
  {
    alert("bar");
  }
</script>

var myIdVar=“”;
如果(myIdVar==“foo”)
{
警报(“酒吧”);
}

这可能有助于您从不同的角度看待它: 在.Net中,您可以使用
myControl.ClientID
获取生成的ID

如果你把它放在一个javascript变量中——我知道它不整洁——你就可以很容易地获取它

<!--mypage.aspx-->
<script>
  var myIdVar = "<%=myControl.ClientID%>";
  if(myIdVar == "foo")
  {
    alert("bar");
  }
</script>

var myIdVar=“”;
如果(myIdVar==“foo”)
{
警报(“酒吧”);
}

我在必要时也会这样做。但是,我觉得我应该注意到,元素类在语义上被设计为跨DOM中的多个元素使用,因此类似这样的东西通常可能返回多个元素。或者你用类名作为ID。我同意这个路由需要一定程度的控制。我也会在必要的时候这样做。但是,我觉得我应该注意到,元素类在语义上被设计为跨DOM中的多个元素使用,因此类似这样的东西通常可能返回多个元素。好吧,要么就是你用类名作为ID。我同意这个路由需要一定程度的控制。谢谢,这非常适合我的情况,只需稍加修改:)谢谢,这非常适合我的情况,只需稍加修改:)这是一条路,因为它得到的是准确的ID,没有出错的余地。这是一种方法,因为它得到的是准确的ID,没有出错的余地