对不起,如果我做错了。那是我第一次在这里问一些事情。 我也很抱歉我的英语很差。
看,我遇到了麻烦。我只为我和我的朋友创建一个迷你社交网络。 我是这个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;。 谁能帮我?我已经死了。
对不起,如果我做错了,再一次。
答案 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');
});
希望它有所帮助!