is( ":focus" ) 总是返回 true



我问这个问题是因为我需要的东西,我在jQuery上遇到了一些问题。所以我打开这个问题,因为其他人也可能有这个。

在我的另一个问题中发布的答案中,用户 Felix 告诉我做这样的事情:

$(document).keypress(function(e) {
    e.preventDefault();
    if(e.which == 13 ) {
        if($("#searchInput").is(":focus")) {
          alert("search form submitted");
          return false;
        } else {
          alert("save form submitted");                  
          return false;
        }
    }
});
​

这似乎是我需要的,但是,条件if($("#searchInput").is(":focus"))总是返回 True,没有控制的重点。

任何人都知道为什么会发生这种情况或我可以这样做的任何其他方式?

你的jQuery版本可能已过时。 通过以下方式获取最新版本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>

这可能是由使用的旧版本的jquery引起的。如果它早于 1.6,那么如果您尚未定义它,:focus将不起作用。版本 1.6 和进一步具有 :focus 选择器,我们不必单独定义它。因此,如果库版本较旧,只需升级它,或者在 js 文件中的某个位置定义:focus。在此处检查 1.6 的 api:jquery 版本 1.6

我的jQuery版本已经过时了,我刚刚从这里获得了最新版本,现在代码运行正常。

最新更新