0

jQueryattr()第二次不工作, 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');
    });
4

2 回答 2

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 中添加/修改的任何未来元素。

您可以在此处阅读有关事件委托的更多信息on

于 2013-10-15T14:27:57.797 回答
2
$('.callEdit').on('click.doSmth', function(){
    var $that = $(this);
    if ($that.hasClass('editAsk')) {
        // do smth
    } else {
        // do smth else
    }
    $that.toggleClass('editAsk editDone');
});

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

于 2013-10-15T14:40:07.520 回答