Без JQuery:
var index,
buttons = document.getElementsByClassName('class_name');
for(var i=0;i<buttons.length;i++){
buttons[i].onclick = function(){
for(var j=0;<buttons.length;j++){
if(buttons[j]==this) {
index = j; //console.log(j), etc
break;
}
}
}
}
С одной меньше фигурной скобкой и fiddle:
[].slice.call(document.getElementsByClassName('class_name')).forEach(function(o,i,arr){
o.onclick = function(){
var index, that = this;
var search = arr.some(function(b,j){
index = j;
return that == b;
});
alert(index);
}
});
нодлистов всегда будут в порядке, но если вы реорганизовать элементы, которые вы будете необходимо снова запросить getElementsByClassName
.
Несколько запутанным, классы не индексируются, и есть на самом деле не индексация происходит на всех, но JQuery имеет 'index' метод, который подсчитывает количество братьев и сестер выше элемент и рассказать вам, сколько других элементов есть перед ним в DOM, давая вам своего рода индекс? – adeneo
Они, похоже, были проиндексированы в этом примере w3schools. http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_getelementsbyclassname – typescript
Это намного яснее исходного вопроса. Любой метод, который имеет множественное число 's', например' getElements ...', возвращает [nodeList] (https://developer.mozilla.org/en-US/docs/Web/API/NodeList), который массив-подобный объект с индексами для доступа к каждому возвращаемому элементу. – adeneo