.is(焦点)vs .activeElement?

时间:2016-08-08 18:57:04

标签: javascript jquery

我遇到了一个奇怪的问题,我已经使用document.activeElement.id解决了这个问题,但使用$('#id').is(':focus')似乎总是返回false

在我的控制台中,我测试了以下内容......

> document.activeElement
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">

> $('#zoomText')
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">

> $('#zoomText').is(':focus')
false

> document.activeElement // to check if focus was lost somehow
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">

为什么is(':focus')会返回false?

1 个答案:

答案 0 :(得分:1)

首先,您的代码中存在错误。它应该是$('#zoomText').is(':focus')

其次,如果光标位于其中,则元素将仅处于焦点。如果光标位于JavaScript控制台中,则它具有焦点并导致输入模糊(失焦)。

在JavaScript控制台中尝试此操作,然后快速将光标放回输入中。 3秒后,它将显示&#34; true&#34;或&#34;假&#34;在控制台中指示&#34; zoomText&#34;的焦点状态。元件。

&#13;
&#13;
setTimeout(function() { console.log(jQuery('#zoomText').is(':focus')); }, 3000)
&#13;
&#13;
&#13;