id的jQuery选择器是否总是在没有引号和#符号的情况下工作?

我突然发现在使用Mozilla / jQuery v1.8.2时我不需要使用引号和#符号的id。 例如,$(bt2)与$(“#bt2”)的工作方式相同,请参阅下面的代码。

这个选择器是否总是有效,使用这种较短的选择forms是否有任何潜在的缺点?

  append   $(document).ready (function(){ $(bt2).click(function(){ $(i1).append("
  • a4
  • ", "
  • a5
  • "); }); });
    • a1

    有些浏览器支持直接访问没有id的html元素,甚至不需要jquery选择器或document.getElementById来访问它们。 In the jquery selector the id you are passing is not taken as Id but as object (html element)因为如果它是id,Button1.id会给你id,那么它不应该给你id。 在这里,我没有使用任何选择器,甚至没有getElementById Live Demo

    HTML

      

    使用Javascript

     alert( Button1.id); //Without any jquery selector or getElementById 

    在下面给出的带有Id Button1的按钮上绑定事件的代码中,Button1不被视为id而是对象,而jquery将javascript可访问的dom对象转换为jquery对象和绑定点击事件

     $(Button1).click(function(){ }); 

    你可以这样做,但要注意这可能不适用于其他浏览器。 相反,你需要使用

     $("#id") 

    这是一个你不应该依赖的假设,因为每个浏览器都在使用它。

    你最好完全避免它,因为它对其他开发人员来说甚至不利于你的代码。 你应该总是尝试推理和使用最好的语义,不仅仅是你自己,还有它的记录方式。

    在jQuery中,你有一整页关于选择器 。

    请使用这些说明。

    浏览器缓存具有id的元素并将其存储在文档的HTMLCollection中。 要查看这个以chrome为开发人员工具,请在页面加载时在javascript的开头添加断点。 在“本地”部分下的右窗格下查看。 在这里展开:文档和所有:HTMLAllCollection []你可以看到元素和下面的列表,其中包含所有具有id的元素。 但是jQuery文档https://api.jquery.com/id-selector/没有提到这一点,所以它不是正确的语法。 另外,为了便于阅读和维护,最好坚持使用$(’#id’)。