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

时间:2012-11-18 11:06:44

标签: jquery jquery-selectors

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

此选择器是否始终有效,使用这种较短的选择形式是否有任何潜在的缺点?

<html>
<head>
    <title>append</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready (function(){
        $(bt2).click(function(){
           $(i1).append("<li>a4</li>", "<li>a5</li>");
        });
    }); 
   </script>
</head>
<body>
    <button id="Button1">Append List</button>
    <ul id="i1">
        <li>a1</li>
    </ul>
</body>
</html>

4 个答案:

答案 0 :(得分:1)

某些浏览器支持直接访问没有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

<button id="Button1">Append List</button>

Javascript

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

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

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

答案 1 :(得分:0)

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

$("#id")

答案 2 :(得分:0)

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

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

在jQuery中,你有一整页关于selectors

请使用此类说明。

答案 3 :(得分:0)

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