Jquery attr()第二次没有工作

时间:2013-10-15 14:26:36

标签: jquery attr

jQuery attr()第二次没有工作, editAsk事情正在发挥作用 但editDone无效。 editDone属性来自.editAsk

    $('.editAsk').on('click', function(){
        var $this = $(this);
        $this.attr('class', 'callEdit editDone');
    });
    $('.editDone').on('click', function(){
        var $this = $(this);    
        $this.attr('class', 'callEdit editAsk');
    });

2 个答案:

答案 0 :(得分:4)

以这种方式使用委托:

$(document).on('click', '.editAsk', function(){
    var $this = $(this);
    $this.attr('class', 'callEdit editDone');
});
$(document).on('click', '.editDone', function(){
    var $this = $(this);    
    $this.attr('class', 'callEdit editAsk');
});

这样做,将允许您将事件处理程序委托给现有元素,或者将在DOM中添加/修改的任何未来元素。

您可以阅读有关活动delegation using on here

的更多信息

答案 1 :(得分:2)

$('.callEdit').on('click.doSmth', function(){
    var $that = $(this);
    if ($that.hasClass('editAsk')) {
        // do smth
    } else {
        // do smth else
    }
    $that.toggleClass('editAsk editDone');
});

一个事件,无需使用委托。这是另一种方法。