sharepoint页面中每个元素的客户端ID有时会发生变化。
任何人都可以告诉我为什么以及它改变的实例???
答案 0 :(得分:2)
jQuery太棒了!它使客户端开发更快 几乎所有需求都可以使用无数的插件。运用 使用Asp.NET Web-Forms的jQuery在处理时会变得更加严重 嵌套服务器控件。使用ASP.NET时会附加ClientID 母版页。 JavaScript中的对象往往如下所示: ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName 上述问题的难点在于,为了获得元素txtName,必须知道完整的“路径”。真是太棒了 加重引用使用以下方法获取对象: 的document.getElementById( 'ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName'); 在开发可能在典型的ASP.NET应用程序或SharePoint中使用的服务器控件或Web部件时,这将成为一个大问题。 如果您不知道完整路径,则无法对上述路径进行硬编码 控制。
幸运的是,有几种方法可以解决这个问题。有三个,特别是我会提到。第一个是jQuery 相当于标准的JavaScript方法: 的document.getElementById( “<%= txtName.ClinetID%>” 中);“); 这可以通过使用以下命令在jQuery中完成: $(“#”<%= txtName.ClinetID%> “中);”); 第二个jQuery方法不需要服务器标签。此方法搜索所有标记并查找以。结尾的元素 指定文字。这个方法的jQuery代码如下所示: $( “[ID $ = '_ txtName的']”); 当然,上述两种方法都存在缺点。第一个是快速的,但需要服务器标签。这很快,但看起来很乱。 此外,它不适用于外部脚本文件。第二 替代方案是干净的,但它可能很慢。正如我之前所说,有 其他几种选择,但这两个是我自己找到的 使用最多。
第三个在C#代码中注册Javascript。
Page.ClientScript.RegisterStartupScript(GetType(), "saveScript",
String.Format("function EnableSave( isDisabled )"+
"{{ var saveButton = document.getElementById(\"{0}\");"+
"saveButton.disabled=isDisabled;}}", btnSave.ClientID), true);
不要忘记在加载控件后调用此脚本,我的意思是在Controls.Add()之后;在CreateChildControls方法中 开发webparts。
答案 1 :(得分:0)
$( '输入[标题= “名称”]')
查看页面源并获取title属性的值 - 每次都有效。
答案 2 :(得分:0)
ListBox1.Attributes.Add("onmouseup",
"document.getElementById('" + base.ClientID + "_" + lbnFilter.ClientID + "').style.display='block';");