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

标签 javascript jquery arrays this indexof

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

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);
        });
    })

关于Javascript: indexOf($(this) 获取点击元素的数组索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578057/

相关文章:

javascript - 多个 Keydown 事件的不同操作

javascript - getElementById 返回空值

javascript - jquery tablesorter滚动条: how set focus to scroll by keydown

javascript - 如何查找数组中不包含在 MongoDB 集合中的项目

javascript - 基本算法脚本: Return Largest Numbers in Arrays (JavaScript)

javascript - 点击 skyscanner api 时获取纯文本响应

javascript - 如何使用 async/await 方法将对象传递到 phantom js 页面?

javascript - JavaScript 中用于网站验证的正则表达式存在问题

javascript - 使用 jquery 调用 finance.yahoo api

C++ - GetLength() 方法获取数组的长度