请原谅我是个菜鸟,但不应该这样做吗?
$(document).ready(function() {
$('.button').click(function() {
$(this).addClass('button-clicked');
});
$('.button-clicked').click(function() {
$(this).removeClass('button-clicked');
});
});
不应该第二次单击删除该类并将其恢复为.button?
这是jsfiddle:http://jsfiddle.net/pXdwM/
答案 0 :(得分:9)
不,因为在您调用第二个click()
时,该按钮没有“.button-clicked”,因此未分配事件处理程序。你可以像这样重写它
$('.button').click(function() {
$(this).toggleClass('button-clicked');
});
或使用live()
$('.button-clicked').live("click", function() {
$(this).removeClass('button-clicked');
});
答案 1 :(得分:2)
您正在使用“.button-clicked”类向每个元素添加一个事件,但在您实际点击之前该类不适用。因此,您需要将第二个侦听器移动到第一个回调中,或使用toggleClass
函数:
$('.button').click(function() {
$(this).toggleClass('button-clicked');
});