我想确定一系列动态添加的输入框中,最后一个获取焦点的元素。这段代码只能获取页面加载时就存在的输入框:
$('input.item').focus(function(){
$(this).siblings('ul').slideDown();
});
这段代码可以查看所有曾经获得过焦点的元素:
$('input.item').live('focus', function(){
$(this).siblings('ul').slideDown();
});
HTML的结构如下:
<ul>
<li><input class="item" name="goals[]">
<ul>
<li>long list here</li>
<li>long list here</li>
<li>long list here</li>
</ul></li>
</ul>
<a href="#" id="add">Add another</a>
页面加载时,只有一个输入框。每次添加新的输入框时,都会创建并附加一个新的无序列表的副本,并将焦点设置在新的输入框上。当每个输入框获得焦点时,我希望显示其下方的列表。但是我似乎无法“监视最近聚焦的元素,无论该元素现在还是将来存在”。
澄清一下:我不是在寻找DOM树中最后出现的元素。我要找到当前具有焦点的元素,即使该元素在原始页面加载时不存在。
这张图片 http://droplr.com/174l8H+
因此,在上面的图像中,如果我将焦点放在第二个元素上,则单词列表应显示在第二个元素下方。 我的焦点当前位于最后一个元素上,因此单词显示在那里。
我是否有某种基本的错误假设?
input
下面。是这样吗? - user113716live()
对我来说很有效。一个input
上的事件不应该影响其他元素。无论它们何时被加载都不应该有影响。 - user113716