注册div中所有元素的事件

时间:2014-12-13 21:39:31

标签: javascript jquery

我正在尝试为div中的所有<button>元素注册相同的事件,因为我有24个,所以我尝试以这种方式使用Jquery&#39; $.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');
        }
    });
});

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

您最好使用事件委派而不是“每个”:

$("#online-hours").on("click", "button", function (event) {

    var $button = $(event.currentTarget);

    // Do something with your $button;

});

答案 2 :(得分:0)

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

编辑,如果你的意思是按钮标签使用我的答案,如果你的意思是使用type ='button'的输入标签使用baao的

答案 3 :(得分:0)

你编写代码的方式看起来就像你有same id multiple time这样不应该更好地使用类。 你可以试试:

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

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