无法获得我想要的输入索引

时间:2013-12-13 07:38:47

标签: jquery

我的代码是这样的:

<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.index 0 1 2 3可以正常工作 我希望$(this).index()返回0 1 2 3

demo

2 个答案:

答案 0 :(得分:0)

.index()的无参数版本返回基于兄弟元素的索引,尝试下面给出的另一个版本的index(),它给出了在匹配的元素集中作为参数传递的元素的索引< / p>

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

演示:Fiddle

$("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

答案 1 :(得分:0)

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

试试这个:

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