看着这个link,我在想这些类实际上是编入索引的。如果我有这个代码,我怎么能在JavaScript或jQuery中获得点击按钮类的索引?如何知道该课程中的哪个索引被点击
<button class="class_name" id="b1"></button>
<button class="class_name" id="b2"></button>
看着这个link,我在想这些类实际上是编入索引的。如果我有这个代码,我怎么能在JavaScript或jQuery中获得点击按钮类的索引?如何知道该课程中的哪个索引被点击
<button class="class_name" id="b1"></button>
<button class="class_name" id="b2"></button>
DEMO:http://jsfiddle.net/mg7zau4c/
jQuery的index
从匹配元素中搜索给定元素。
$('.class_name').on('click', function(){
console.log($(this).index());
});
感谢。如何从此返回ID? - 句法7分钟前
$(this).attr('id');
jQuery中: $( “#B1”)的.index()
编辑:刚才看到你的更新,你可以这样做在了jQuery按钮按下指数
$('button').click(function (event) {
alert($(this).index());
});
你也许会想这是由var nodes = document.querySelectorAll('.class_name')
然后例如可以做nodes.length
和console(nodes[1].id)
返回NodeList
的。
感谢您的帮助。 – typescript
没有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);
}
});
的NodeLists总是顺序,但如果你重新排列元素,你会必须再次查询getElementsByClassName
。
感谢您的帮助。 – typescript
您可以使用它遍历子元素包含按钮的元素。假设唯一的孩子是有问题的按钮,你可以像这样得到索引。
document.getElementById('buttonContainer').addEventListener('click', function(e) {
var clickedButton = e.target,
index = -1;
[].slice.call(this.children).some(function(el, idx) {
if (e.target === el) {
index = idx;
return true;
}
return false;
});
document.getElementById('indexText').textContent = index + ' ' + e.target.id;
});
<div id="buttonContainer">
<button class="class_name" id="red"></button>
<button class="class_name" id="blue"></button>
<button class="class_name" id="purple"></button>
<button class="class_name" id="magenta"></button>
<button class="class_name" id="rouge"></button>
<button class="class_name" id="cyan"></button>
<button class="class_name" id="yellow"></button>
<button class="class_name" id="black"></button>
</div>
<p id="indexText"></p>
感谢您的帮助。 – typescript
有点混乱,类没有索引,并没有真正的索引回事所有,但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