我遇到麻烦,使用jQuery .index()函数。 所以我要做的是,当我点击span(.edit)时,我想提醒一个输入字段的索引(一个以上)。我正在测试一些东西,而index()总是返回0或-1。
<div id="wrapper">
<input class="editInput" type="text" />
<span>Mr. Foo</span>
<div>
<span class="edit">Full name</span>
</div>
<input class="editInput" type="text" />
<span>Foo Town</span>
<div>
<span class="edit">City</span>
</div>
</div>
jQuery语句
$(".edit").click(function(){
alert($(this).parent().siblings(".editInput").index());
}
我尝试了很多类似的东西,但都没有奏效。
有什么想法吗?
答案 0 :(得分:2)
$(this).parent().siblings(".editInput")
将选择所有.editInput
元素,并且不带参数调用.index()
将获得第一个选定元素(第一个.editInput
元素)相对位置对于它的兄弟姐妹,这里总是0
。
如果要获取输入元素相对于其他输入元素的索引,则必须先选择所有输入元素:
var $inputs = $('#wrapper .editInput');
然后,您必须找到点击的input
中距离最近的span
元素,您可以使用.prevAll
[docs]和.first
[docs]执行此操作:
var $closest_input = $(this).parent().prevAll('.editInput').first();
然后在input
元素集上调用.index
[docs],传递刚发现的input
:
var index = $inputs.index($closest_input);
以这种方式调用时,.index
将返回所选元素集中传递元素的索引。
答案 1 :(得分:1)
试
$("span.edit").click(function(){
$(this).closest("#wrapper").find(".editInput").each(function(){
alert($(this).index(":parent .editInput"));
});
});
答案 2 :(得分:1)
$("span.edit").click(function(){
alert($(this).parent().siblings(".editInput").index());
});
这是你想要做的吗?