jquery,在通过id找到它之后处理控件

时间:2011-05-18 20:16:04

标签: javascript jquery jquery-selectors controls

我发现了jquery所需的控件,如下所示......

控制源:

<a id="ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit" class="lbEdit" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit','')">ویرایش</a>

jquery代码:

  

警报($( '一个[ID $ = “lbEdit”]'));


我想知道

之间有什么区别
ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

我怎样才能获得

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

用jquery?
意味着我需要检查上层ID或条件中的任何内容,我认为硬编码上层ID不正确...

4 个答案:

答案 0 :(得分:2)

使用.NET 4.0并将CliendIDMode设置为Static。

http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

它将使您的ID更容易从JavaScript中引用。

答案 1 :(得分:2)

首先,ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit是元素的HTML Id属性。

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit是元素的内部ASP.Net引用。它对网站的前端毫无用处。

在您的示例中,要使用jQuery选择器获取该元素的文本,您可以使用:

$("#ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit").text();

值得注意的是,使用ASP.Net webforms意味着你不能永远依赖那个元素的ID。您必须通过它的类(可以在ASP.Net中可靠地设置)以及它的父级来确定该特定元素。

答案 2 :(得分:2)

ASP.Net使用那些错综复杂的命名模式来生成html元素ID,因为它们runat="server"使得难以用来在页面上通过id查找控件。

尝试使用控件ClientID代替服务器标记的选择器:

$('#<%=lbEdit.ClientID %>");

答案 3 :(得分:0)

我想你可能想要这样做。     javascript:__ doPostBack('&lt;%= lbEdit.ClientID%&gt;','')