首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .focus实际上并不关注新创建的元素

问jQuery .focus实际上并不关注新创建的元素
EN

Stack Overflow用户
提问于 2008-12-02 16:09:04
回答 8查看 36.7K关注 0票数 13

假设我有这样的标记:

代码语言:javascript
复制
<div id="content">
  <div id="firstP"><p>First paragraph</p></div>
  <div id="secondP"><p>Second paragraph</p></div>
  <div id="thirdP"><p>Third paragraph</p></div>
  <div id="fourthP"><p>Fourth paragraph</p></div>
</div>

我想用jQuery添加一个新的<div>,并专注于这个新元素。.focus不做任何事情。

代码语言:javascript
复制
function addParagraph() {
  var html = "<div id=\"newP\"><p>New paragraph</p></div>";

  $("#content").append(html);
  $("#newP").focus();    
}

知道为什么吗?

EN

回答 8

Stack Overflow用户

发布于 2009-08-31 21:38:50

我认为主要答案是不正确的。如果您为DIV和p标记指定了tabindex属性,则它们可以接收焦点。即

代码语言:javascript
复制
<div class="someclass" tabindex="100">

一旦指定了tabindex,就可以使用Tab键切换到这些元素,也可以使用.focus()转移焦点。

在这里使用scrollTo插件似乎有点过头了。

票数 50
EN

Stack Overflow用户

发布于 2008-12-02 16:10:10

你的代码没有问题,只是段落或标签不能接收焦点。焦点只能放在你能与之交互的东西上,比如链接、输入元素、文本等。

要将窗口滚动到这个新添加的元素,您可以使用诸如ScrollTo之类的插件。

顺便说一句,你的代码可以简化一点:

代码语言:javascript
复制
var html = "<div id=\"newP\"><p>New paragraph</p></div>";
$("#content").append(html);
$("#newP p").focus();

var html = "<div id=\"newP\"><p>New paragraph</p></div>";
$(html)
    .appendTo('#content')
    .focus()   // or scrollTo(), now...
;
票数 17
EN

Stack Overflow用户

发布于 2010-07-04 08:48:52

此代码将避免对其他插件的依赖,并允许您在任何元素上使用它。

代码语言:javascript
复制
$('html, body').animate({ scrollTop: $("#newP").offset().top }, 500);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/334489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档