2013-12-13 106 views
-2

我这样的代码:
不能得到输入指数我想

<input type="text" id="getIndex"/> 
<input type="text" /> 
<input type="text" name="abcGid1" /> 
<input type="text" name="abcGid2" /> 
<input type="text" name="abcGid3" /> 
<input type="text" name="abcGid4" /> 

var getData=[ 
    {"index":0,"value":"1111"}, 
    {"index":1,"value":"2222"}, 
    {"index":2,"value":"3333"}, 
    {"index":3,"value":"4444"}, 
]; 
$.each(getData,function(i,n){ 
    $("input[name*='Gid']").eq(n.index).val(n.value); 
}); 
$("input[name*='Gid']").blur(function(){ 
    $('#getIndex').val($(this).index()); 
}); 

为什么$(this).index()回报2 3 4 5,
n.index0 1 2 3可以工作。
我想$(this).index()回报0 1 2 3

demo

回答

0

的的.index()的无参数版本返回基于同级元素的索引,试图指数()的另一个版本它下面给出给出了指数Fiddle

○:作为参数在匹配元素集合

$("input[name*='Gid']").blur(function() { 
    $('#getIndex').val($("input[name*='Gid']").index(this)); 
}); 

演示的传递元件的[R

$("input[name*='Gid']").blur(function() { 
    $('#getIndex').val($(this).index("input[name*='Gid']")); 
}); 

演示:Fiddle

但我会建议您缓存选择为

var $grds = $("input[name*='Gid']"); 
$.each(getData, function (i, n) { 
    $grds.eq(n.index).val(n.value); 
}); 
$("input[name*='Gid']").blur(function() { 
    $('#getIndex').val($grds.index(this)); 
}); 

演示:Fiddle

0

您的逻辑错误。 $(this).index()是form中元素的索引,而不是在你的选择器$(“input [name * ='Gid']”)结果中。

试试这个:

$("input[name*='Gid']").each(function(i,n){ 
    $(this).blur(function(){ 
    $('#getIndex').val(i); 
    }); 
}); 
相关问题