我改变了一个类的元素上的火事件

时间:2014-04-08 21:40:54

标签: javascript jquery

对不起,如果我做错了。那是我第一次在这里问一些事情。 我也很抱歉我的英语很差。

看,我遇到了麻烦。我只为我和我的朋友创建一个迷你社交网络。 我是这个jQuery / Ajax的新手,所以他们说我的页面太静态,他们不得不做的任何事情,页面都刷新了,这很糟糕。然后我决定学习一些'dinamic'事情,我开始遇到一些问题。

所以,我有一个" Like-like"(haha)按钮,我想创建一个类似(撤销)的""按钮。

我会尝试模拟我的问题:

<a class="like">Like</a>
$('.like').click(function(){
     //Like in database
     $(this).html('Like(Undo)');
     $(this).removeClass('like');
     $(this).addClass('like-undo');
});

所以,当我点击它时,它会触发&#39;喜欢&#39;集体诉讼,而非&#39;喜欢撤消&#39;。 谁能帮我?我已经死了。

对不起,如果我做错了,再一次。

2 个答案:

答案 0 :(得分:2)

事件处理程序绑定到元素。更改元素的类时,不会更改绑定到哪个处理程序。幸运的是,对于这种情况,如果使用event delegation

,则可以获得该行为
$('some-common-container').on('click', '.like', function() {
    //...
});

$('some-common-container').on('click', '.like-undo', function() {
    //...
});

答案 1 :(得分:0)

如你所说,现在你的页面是dinamic,所以你告诉你的js,当他们点击.like类触发该函数时,现在的问题是你正在删除类。就像现在它有一个类。撤消,这样一个简单的解决方案就是添加另一个函数来指示你的js如果点击你该做什么.like-undo class

$('.like').click(function(){
     //Like in database
    $(this).html('Like(Undo)');
    $(this).removeClass('like');
    $(this).addClass('like-undo');
});

$('.like').click(function(){ //notice you do opossite acctions
   //dislike in database
   $(this).html('Like');
   $(this).removeClass('like-undo');
   $(this).addClass('like');
});

希望它有所帮助!