我怀疑这里发生了一些奇怪的事情;
$('#botonAñadir').fadeOut(500, function (e) {
$('#botonEditar').fadeIn(500).on('click', function (e) {
console.log(DEBUG + 'en el click del boton');
e.preventDefault();
e.stopPropagation();
localStorage.removeItem(contacto);
that.nuevoContacto();
$(this).fadeOut(500, function () {
$('#botonAñadir').fadeIn();
});
});
});
当我点击#botonAñadir时第一次按预期工作但第二次点击它会调用两次that.nuevoContacto(),依此类推,所以第三次调用它3次等等。
我是否遵循任何反模式或类似的?我无法理解为什么它的表现如此。
将淡化与on相结合是否存在问题?
EDIT。
我就像下面这样,即使我知道这个时候看起来很丑,我的大脑也被炸了;
$('#botonAñadir').fadeOut(500, function (e) {
$('#botonEditar').fadeIn(500);
});
$('#botonEditar').on('click', function (e) {
console.log(DEBUG + 'en el click del boton');
e.preventDefault();
e.stopPropagation();
localStorage.removeItem(contacto);
that.nuevoContacto();
$(this).fadeOut(500, function () {
$('#botonAñadir').fadeIn();
$('#botonEditar').off('click');
});
});
答案 0 :(得分:1)
问题是每次元素淡入时都会绑定onClick事件处理程序。
尝试在淡入淡出效果之外绑定事件处理程序,或在再次绑定处理程序之前使用.off('click'):
$('#botonEditar').fadeIn(500).off('click').on('click', function (e) {...
答案 1 :(得分:1)
他们这样写了,on('click'...
部分每次执行淡出功能时都会添加另一个点击处理程序...
尝试使用.once()
或重写以将on()
放在开头...
$('#botonEditar').fadeIn(500).once('click', function (e) {