为多类元素的某个类的元素查找Dom节点索引

时间:2014-04-12 12:31:00

标签: javascript jquery dom indexing

嗨我有一系列带有多个不同类的标签。单击某个span时,我想返回跨度类的索引。所以不是跨度索引。

这是一个示例html:

<span class='spantype1 party'>text1</span>
<span class='spantype2 party'>text2</span>
<span class='spantype1 party'>text3</span>

所以如果我点击text3我想要返回1而不是2.如果我点击text1我想要返回0.当然如果我点击text2我想要返回0。

来自here的答案不起作用,因为索引始终返回为-1(因为有多个类),请参阅my example jsfiddle

$( "span" ).click(function() {
    var index = $('.' + $(this).attr('class')).index($(this));
    alert(index);
});

1 个答案:

答案 0 :(得分:1)

我使用过滤器来获取您感兴趣的课程,并根据该内容进行搜索:

$("span").click(function() {
    var spanType = $.grep(this.classList, function (className) {
        return /^spantype/.test(className);
    })[0];

    var index = $('.' + spanType).index($(this));
    alert(index);
});

我上面使用了classList,但为了获得更好的支持(请参阅caniuse.com),您可能会使用className代替:

$("span").click(function() {
    var spanType = $.grep(this.className.split(/\s+/), function (className) {
        return /^spantype/.test(className);
    })[0];

    var index = $('.' + spanType).index($(this));
    alert(index);
});