编程语言
首页 > 编程语言> > Javascript:indexOf($(this)获取被单击元素的数组索引值?

Javascript:indexOf($(this)获取被单击元素的数组索引值?

作者:互联网

我有一个带有按钮的数组:

var buttonnumber = ["#btn1", "#btn2", "#btn3", "#btn4", "#btn5"];

如果单击其中之一,我想在数组中获取其索引值:

$("#btn1, #btn2, #btn3, #btn4, #btn5").click(function() {
var y = buttonnumber.indexOf(this); //($(this)) doesn't work either!
});

这行不通.
我改用jQuery方法.index():

var y = $(this).index();

但我不希望因为html中按钮的顺序与数组中的顺序不同.

谢谢你的帮助!

解决方法:

由于数组的ID具有散列,因此您需要使用散列而不是元素本身来搜索ID.有两种解决方案:

使您的按钮数组引用对象而不是ID

var buttonnumber = [$("#btn1"), $("#btn2"), $("#btn3"), $("#btn4"), $("#btn5")];

$("#btn1, #btn2, #btn3, #btn4, #btn5").click(function() {
    var y = buttonnumber.indexOf($(this));
});

或对要单击的对象的ID执行indexOf:

var buttonnumber = ["#btn1", "#btn2", "#btn3", "#btn4", "#btn5"];

$("#btn1, #btn2, #btn3, #btn4, #btn5").click(function() {
    var y = buttonnumber.indexOf("#" + this.id);
});

您还可以将该点击选择器编写为:

var buttonnumber = ["#btn1", "#btn2", "#btn3", "#btn4", "#btn5"];

$(buttonnumber.join()).click(function() {
    var y = buttonnumber.indexOf("#" + this.id);
});

在现代浏览器中,您也不再需要jQuery这样的东西:

var buttonnumber = ["#btn1", "#btn2", "#btn3", "#btn4", "#btn5"];
// cast nodelist that's returned from querySelectorAll to array
Array.prototype.slice.call(document.querySelectorAll(buttonNumber.join()))
    .forEach(el => {
        el.addEventListener("click", (event) => {
            let y = buttonnumber.indexOf("#" + this.id);
        });
    })

标签:indexof,this,arrays,javascript,jquery
来源: https://codeday.me/bug/20191030/1965142.html