2

我有以下html结构

<div class="someClass">
    <button class="actionButton" id="b0"></button>
</div>
<div class="otherClass">
    <button class="actionButton" id="b1"></button>
    <button class="actionButton" id="b2"></button>
    <button class="actionButton" id="b3"></button>
    <button class="actionButton" id="b4"></button>
</div>

我使用一个函数来根据它们在dom中的索引停用按钮,使用actionButton类作为选择器,就像这样

function DisableButtons(indexes, disable) {
    $('.actionButton').each(function () {
        $this = $(this);
        alert($this[0].id + " index: " + $this.index());
    });
}

我的警报显示以下输出

b0 index: 3
b1 index: 0
b2 index: 1
b3 index: 2
b4 index: 3

第一个 div 包装器中的按钮与第二个 div 包装器中的最后一个按钮具有相同的索引。这是标记问题吗?

看到第二个 div 块中的按钮如何正确返回,我只能假设问题与标记/选择器相关。如何在不更改标记的情况下解决此问题?

4

2 回答 2

2

如果我们省略参数,.index() 将返回匹配元素集中第一个元素相对于其兄弟元素的位置

尝试这个 -

$('.actionButton').index($this)代替$this.index()

输出 :

b0 index: 0 
b1 index: 1 
b2 index: 2 
b3 index: 3 
b4 index: 4 

演示--> http://jsbin.com/esupev/2

于 2013-05-20T19:22:10.050 回答
1

代替

$this.index()

尝试

$('.actionButton').index($this)

以这种方式使用 index 方法将从匹配的元素中搜索给定的元素。

检查小提琴

您想根据所有带有class="actionButton".

于 2013-05-20T19:16:33.960 回答