jquery nextall首先得到id

时间:2014-11-16 12:46:38

标签: javascript jquery

当用户退出输入字段时,我试图获取下一个输入字段的id:

$("input").blur(function(){
var theid = $(this).attr('id');
var thefield = $(this).nextAll('input').first().attr('id');
alert(thefield);
});

目前它返回undefined。 HTML代码是:

<table><tr>
<td>Number</td><td>Name</td>
<tr><td>1 <input type='text' name='deltagernummer[]' value='' size='6' id='r0' tabindex='1' /></td>
<td><input type='text' name='deltagernavn[]' value='' id='rr0' tabindex='-1' /></td></tr>
<tr><td>2 <input type='text' name='deltagernummer[]' value='' size='6' id='r1' tabindex='2' /></td>
<td><input type='text' name='deltagernavn[]' value='' id='rr1' tabindex='-1' /></td></tr>
</table>

有什么问题?

2 个答案:

答案 0 :(得分:6)

.nextAll()扫描兄弟姐妹。虽然您的<input>处于同一级别,但他们不是兄弟姐妹。要想象一下&#34;这里的伪HTML:

儿童和孩子的兄弟姐妹:

<parent>
  <child>
  <childs-sibling>
</parent>

你的案子:

<parent>
  <descendant>
    <input>
  </descendant>
  <descendant-sibling>
    <totally-unrelated-to-input>
  </descendant-sibling>
</parent>

你可以做的是爬上<tr>级别,接下来的行,获得所有输入,获得第一个,然后获得id。

var id = $(this)
    .closest('tr')           // Get to the row level
    .nextAll('tr')           // Get all succeeding rows
    .find('td > input')      // Find the inputs. You may adjust the selector.
    .eq(0)                   // Get the first input
    .attr('id');             // Get its id, if any

答案 1 :(得分:3)

Nextall()经历了兄弟姐妹,你的输入没有兄弟姐妹。

$("input").blur(function(){
    var theid = $(this).attr('id');
    var thefield = $(this).closest('tr').next().find('input').attr('id');
    alert(thefield);
});

http://jsfiddle.net/xq6snuLs/