0

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

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

任何想法?

4

3 回答 3

2

$(this).parent().siblings(".editInput")在这种情况下将选择所有.editInput元素,并且.index()不带参数调用将获得第一个选定元素(第一个.editInput元素)相对于其兄弟元素的位置,该兄弟元素将始终0在此处。


如果要获取输入元素相对于其他输入元素的索引,则必须首先选择所有元素:

var $inputs = $('#wrapper .editInput');

input然后,您必须从 clicked中找到最接近的前一个元素span,您可以使用.prevAll [docs].first [docs]执行此操作:

var $closest_input = $(this).parent().prevAll('.editInput').first();

然后在元素集上调用.index [docs]input,传递刚刚找到的input

var index = $inputs.index($closest_input);

以这种方式调用时,.index将返回所选元素集中传递的元素的索引。

于 2013-03-24T00:23:46.860 回答
1

尝试

$("span.edit").click(function(){
    $(this).closest("#wrapper").find(".editInput").each(function(){
        alert($(this).index(":parent .editInput"));
    });
});

http://jsfiddle.net/XZEAS/1

于 2013-03-24T00:22:54.307 回答
1
$("span.edit").click(function(){
    alert($(this).parent().siblings(".editInput").index());
});

这是你想要做的吗?

http://jsfiddle.net/uJsg8/

于 2013-03-24T00:23:04.477 回答