0

我有一个表单,其中按钮的类是动态变化的,具体取决于请求的来源。我正在尝试捕获 onclick 事件,但它不包含动态添加的类。我确保该类被添加到按钮中。我哪里会出错。

片段——

   $('.button').removeClass('oldClass');
   $('.button').addClass('newClass');

   <button class = "button">Button</button>

点击 --

     $('.newClass').click(function(){
          alert("test");
     });

尽管按钮类更改为 newClass,但代码不会到达此事件事件。

谢谢

4

4 回答 4

3

那是因为当您绑定单击事件时,该元素具有另一个类。

尝试这样的事情:

$('body').on('click', '.newClass', function () {
        alert('test');
    });

例子

于 2013-08-21T19:51:22.727 回答
0

我使用 JQuery 提供的委托方法解决了这个问题。

$('body').delegate('.newClass','click', delegatefunction);

function hasClass() {
   alert("Hello!!");
}

谢谢您的帮助。

于 2013-08-22T22:45:57.087 回答
0

您可以尝试在 DOM 加载时直接向按钮添加单击功能,并仅用于.hasClass()检查是否已应用 newClass。

$('.button').click(function() {
    if($(this).hasClass('newClass')) {
        //Code for new class click
        alert('test');
    }
});

JSFiddle:http: //jsfiddle.net/yRySK/1/

于 2013-08-21T20:01:01.030 回答
0

通过.bind之类的方法(或 .click 之类的快捷方式)设置事件处理程序仅适用于当前与选择器匹配的元素。如果您想为当前匹配的元素以及所有未来匹配的元素设置事件处理程序,那么您应该使用.on

于 2013-08-21T19:58:44.827 回答