在ASP.NET和jQuery中定位服务器控件

时间:2017-06-04 18:13:53

标签: javascript jquery asp.net html5

我无法在已创建的主题中找到答案。是

$(<%=txtRating.ClientID%>).val("Set the value");

相当于

$("#<%=txtRating.ClientID%>").val("Set the value");

?两者都工作得很好,所以有什么区别吗?谢谢。

1 个答案:

答案 0 :(得分:0)

两者都有效,因为浏览器会自动为每个标记ID创建一个变量,以便遵循HTML5标准。见http://2ality.com/2012/08/ids-are-global.html

您的代码:

$(<%=txtRating.ClientID%>).val("Set the value");
$("#<%=txtRating.ClientID%>").val("Set the value2");

在生成的HTML页面上呈现此Javascript:

$(txtRating).val("Set the value");
$("#txtRating").val("Set the value2");

第一个起作用是因为:

  

HTML5标准指定如果只有一个DOM元素elem的属性id具有值key,则window对象必须具有值为elem的属性键。

例如,给定此HTML:

<div id="foo"></div>

您可以使用id作为变量来获取HTML标记。因此$(foo)返回该标记的jQuery对象。与$('#foo')相同,它也返回相同标记的jQuery对象。

> "foo" in window
true

> foo
<div id=​"foo">​</div>​

> $(foo)
Object [ <div#foo> ]

> $('#foo')
Object [ <div#foo> ]