Javascript 当jQuery选择器从控制台工作时,什么会导致它在document.ready之后失败?

Javascript 当jQuery选择器从控制台工作时,什么会导致它在document.ready之后失败?,javascript,jquery,selector,document-ready,Javascript,Jquery,Selector,Document Ready,我使用jQuery从DOM中选择一个唯一的ID: $(document).ready( alert("length :" +$("#btn").length) ); 当页面仍然为白色时会触发警报。我不知道它是否更改了任何内容,并且未选择任何内容。len为0 当我在控制台中复制/粘贴警报时,当站点视觉就绪时,警报的长度为:1 由于某些原因,document.ready或选择器不起作用 我使用jquery3.2.1 按钮本身是这样的: <ul class="nav navbar-na

我使用jQuery从DOM中选择一个唯一的ID:

$(document).ready(
    alert("length :" +$("#btn").length)
);
当页面仍然为白色时会触发警报。我不知道它是否更改了任何内容,并且未选择任何内容。len为0

当我在控制台中复制/粘贴警报时,当站点视觉就绪时,警报的长度为:1

由于某些原因,document.ready或选择器不起作用

我使用jquery3.2.1

按钮本身是这样的:

<ul class="nav navbar-nav">
    <li class="active"><a href="#">abc</a></li>
    <li><button class="btn btn-primary" type="button" id="btn">said button</button></li>
</ul>

我们必须将匿名函数或命名函数回调传递到一个准备好让它正常工作的容器中,即DOM加载完成后

试试这个:

$(document).ready(function(){
             //----^^^^^^^----------- here
   alert("length :" +$("#btn").length)
});
或者像每个优秀的开发人员一样使用的速记代码:

$(function(){
   alert("length :" +$("#btn").length)
});
$document.readyfunction{ alertlength:+$btn.length }; 巴顿说
我们必须将匿名函数或命名函数回调传递到一个准备好让它正常工作的容器中,即DOM加载完成后

试试这个:

$(document).ready(function(){
             //----^^^^^^^----------- here
   alert("length :" +$("#btn").length)
});
或者像每个优秀的开发人员一样使用的速记代码:

$(function(){
   alert("length :" +$("#btn").length)
});
$document.readyfunction{ alertlength:+$btn.length }; 巴顿说
“如果我没弄错的话,那就行了,len计算得太早了吗?”PierreAntoineGuillaume抱歉没弄懂你的意思。你能详细说明一下吗。还没用吗?哈哈,原来是匿名函数丢失了,现在可以用了。如果我理解正确的话,如果长度为0,那是因为长度计算得太早?我要等8分钟才能确认答案。顺便说一句,代码段使用了错误的jquery version.Ya。ready确保在调用函数之前加载DOM。只有当页面DOM准备好让JavaScript代码执行时,ready内部的函数才会运行。在您的例子中,由于缺少该函数,它在加载DOM之前执行,因此长度为0。此外,document.ready是在jquery的早期阶段引入的,因此据我所知,它应该可以在任何版本中使用“如果我没弄错的话,那就行了,len计算得太早了吗?”PierreAntoineGuillaume抱歉没弄懂你的意思。你能详细说明一下吗。还没用吗?哈哈,原来是匿名函数丢失了,现在可以用了。如果我理解正确的话,如果长度为0,那是因为长度计算得太早?我要等8分钟才能确认答案。顺便说一句,代码段使用了错误的jquery version.Ya。ready确保在调用函数之前加载DOM。只有当页面DOM准备好让JavaScript代码执行时,ready内部的函数才会运行。在您的例子中,由于缺少该函数,它在加载DOM之前执行,因此长度为0。此外,document.ready是在jquery的早期阶段引入的,因此据我所知,它应该可以在任何版本中使用