2017-06-04 47 views
1

我无法在已创建的线程中找到答案。相当于在ASP.NET和jQuery中定位服务器控件

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

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

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

回答

0

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

您的代码:

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

呈现此Javascript生成的HTML页面:

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

的第一个作品,因为:

的HTML5标准规定,窗口对象必须具有一个属性键,如果只有一个DOM元素elem,其值为elem属性ID具有值键。

例如,假设此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> ]