为 div 中的所有元素注册事件



我正在尝试为div 中的所有<button>元素注册相同的事件,因为我有 24 个元素,所以我尝试以这种方式使用 Jquery 的$.each(),它将div 读取为元素而不是按钮

$("#online-hours").each(function () {
    var element = this;
    $(element).click(function () {
        if ($(element).hasClass('btn-success')) {
            $(element).toggleClass('btn-success');
            $(element).addClass('btn-danger');
        } else if ($(element).hasClass('btn-danger')) {
            $(element).toggleClass('btn-danger');
            $(element).addClass('btn-success');
        }
    });
});

如果 id 在容器上,你应该调用

$("#online-hours button").each(function () {

最好使用事件委派而不是"each":

$("#online-hours").on("click", "button", function (event) {
    var $button = $(event.currentTarget);
    // Do something with your $button;
});
var div = document.getElementById('myDiv');
var list = div.querySelectorAll('button');
var i = list.length;
while(i--){
    list[i].addEventListener('click', function(e) { //doesn't have to be click
        //do stuff
    }
}
编辑,如果你的意思是按钮标签,请使用

我的答案,如果你的意思是输入标签类型='按钮'使用baao的

你编写代码的方式看起来你已经same id multiple time不应该更好地使用class。您可以尝试:

$("button").each(function () {
//code here............
});

$(".online-hours button").each(function () {
    //code here............
    });

最新更新