我的代码是这样的:
<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
答案 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);
});
});