"
$('#<%=lblName.ClientID%>')和$('[id$=lblName]')有什么区别?
"$('#<%=lblName.ClientID%>')
将查找一个具有由ASP.Net的ClientID
属性提供的id
属性的元素。
$("[id$=lblName]")
将查找一个具有以lblName
结尾的id
属性的元素,例如foo-lblName
。
$('#<%=lblName.ClientID%>')
- # 是 JQuery 中用于识别具有 id 属性的元素的 选择器。
$("[id$=lblName]")
- 将选择所有 id 属性以 lblName 结尾的元素。
第一个选择器($('#<%=lblName.ClientID%>')
)是id选择器,它将通过元素的ID查找元素。这非常快,因为它将使用本地的document.getElementById
。
第二个选择器Attribute Ends With selector的工作方式不同。例如,在IE中,它将获取所有元素并测试每个元素的ID是否以提供的值结尾(或类似的内容)。这要慢得多。在较新的浏览器中,可能会使用querySelectorAll来查找该选择器的元素,但我不确定该函数是否支持它(好吧,在这里它被定义为有效的css3,因此假设现代浏览器将在querySelectorAll中支持以选择器结尾)。
因此,总之,在任何情况下,id选择器应该更快,而在旧浏览器中速度更快。同时,以选择器结尾的选择器允许您在不将其客户端ID传递给浏览器的情况下查找元素。
$('#<%=lblName.ClientID%>')
只会选择一个元素,但是$("[id$=lblName]")
会选择多个元素,所以如果你给多个元素分配了相同的ID,并且想要遍历它们中的所有元素,则第一种情况将无法正常工作。
$("[id$=lblName]")
将包含多个以该名称结尾的 ID 元素。因此,在这种情况下,$('#<%=lblName.ClientID%>')
将是控件的唯一选择器。 - E.Meir