jQuery - 索引返回0或-1

时间:2013-03-24 00:17:42

标签: javascript jquery

我遇到麻烦,使用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());
}

我尝试了很多类似的东西,但都没有奏效。

有什么想法吗?

3 个答案:

答案 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"));
    });
});

http://jsfiddle.net/XZEAS/1

答案 2 :(得分:1)

$("span.edit").click(function(){
    alert($(this).parent().siblings(".editInput").index());
});

这是你想要做的吗?

http://jsfiddle.net/uJsg8/