1

How do I focus on the next textarea that comes after the button that was clicked?

http://jsfiddle.net/infatti/GmPCz/

$('.add').click(function(){
  $(this).closest('div').next('textarea:visible').focus();
});
4

3 回答 3

2

closest()从当前元素开始并在 DOM 中搜索与选择器匹配的第一个元素。您想要的 div 不是链接的祖先,而是兄弟姐妹。

http://jsfiddle.net/8TVxd/

$('.add').click(function(){
    $(this).next('div').find('textarea:visible:first').focus();
});
于 2013-09-24T17:26:50.010 回答
1

尝试找到下一个div并专注于第一个可用的textarea。此外,请确保使用以下内容覆盖锚标记的默认行为preventDefault()

$('.add').click(function(event){
  event.preventDefault();
  $(this).next('div').find('textarea:visible').first().focus();
});

JSFiddle

于 2013-09-24T17:28:34.277 回答
0

这应该这样做:

$(this).next().find('textarea').filter(':visible').first().focus();

jsFiddle 更新了

出于性能原因,使用.filter(':visible').first()而不是将其包含在选择器中。它避免了执行额外的查询,因为它只是从初始单个查询中减少现有的结果集。

性能差异的示例说明

于 2013-09-24T17:27:41.960 回答