$(document).ready(function() {
var dotNetPrefix = $("[id$='prepended_ID_value']").attr('id');
if (dotNetPrefix !== undefined) {
dotNetPrefix = dotNetPrefix.replace('prepended_ID_value', '');
dotNetPrefixID = '#' + dotNetPrefix;
console.log('dotNetPrefix = ' + dotNetPrefix);
testDotNet('prepended_ID_value');
} else {
console.log('Hidden Field is Missing! => <asp:HiddenField runat="server" ID="prepended_ID_value" Value="dotNet_ID_Prefix" />');
}
});
function testDotNet(getID) {
var test_dotNetPrefixID = $(dotNetPrefixID + getID).val();
console.log('$(\'' + dotNetPrefixID + getID + '\').val() = ' + test_dotNetPrefixID);
}
此方法的一个问题是,它要求我将以下隐藏字段放在每个页面:
<asp:HiddenField runat="server" ID="prepended_ID_value" Value="dotNet_ID_Prefix" />
...这使它有点klunky(或增加了现有的klunkiness因素)。
我的最终目标是实现它,以便我不再需要使用<%= id.ClientID %>
(或任何需要服务器端代码的东西),以便将我所有的JS都称为包括在内,而不必将其嵌入我的ASPX页面。哦,我的第二个终极目标是,它尽可能简单,并且不需要在项目到项目的设置时间很多。I创建了一个示例
为什么不仅使用
clientidmode =“ static”? 将其设置在web.config中,以便您的客户端ID在整个网站中写入。
如果您使用的是.NET框架4.0或更高版
您可以用静态用作您可以将jQuery结束与选择器一起使用:
$('input[id$="myServerId"]')
但请记住,这种选择器比直接使用ID使用<%= id.ClientID %>
.
http://jsperf.com/id-vs-ends-with
正确的答案如下
var txt1 = $('#<%= txt1.ClientID %>');
$(txt1).click(function () {
alert('hi');
});
HER我在JavaScript上创建一个新变量,该变量是基于其渲染客户端ID的控制