fadeIn / fadeOut不会正确触发并重复自己的jQuery
我的情况:如果用户点击了我的canvas中没有选定图层的删除按钮(垃圾箱图标),我的工具提示应该显示出来,并建议他选择一个。 一切都很好,但fadeIn和Out不会正常射击。 在第一次点击它不会出现,但在第二次。 如果你没有选择图层再次点击,.tooltip突然开始闪烁不受控制…
码:
$('#clearer').click(function() { var activeObject = canvas.getActiveObject(); if(activeObject === undefined || activeObject === null){ $('#clearer').mouseup(function(e) { var yPos = e.pageY-100; var xPos = e.pageX-100; $('.tooltip').css({ 'top': yPos, 'left': xPos }).fadeIn(200).html('Choose Layer to Delete!') $('.tooltip').delay(3000).fadeOut(200); } )}else { canvas.remove(activeObject); }; });
我不知道什么是错的。 我试着将它链接起来:
.fadeIn(200).html('Choose Layer to Delete!').delay(3000).fadeOut(200)
但仍然是相同的错误,没有任何错误消息…
由于复杂性,我不能设置一个小提琴,但这里是我操场的链接
LINK M13游乐场
thx任何帮助或提示和抱歉我的坏englisch:|
每次单击#clearer元素时都会创建一个.mouseup()
处理程序,这会导致您的问题。 点击是一个元素上的mousedown和mouseup之间的组合。 这就是为什么你的淡入淡出不会在第一次点击时触发,因为只有在第一次点击后,才会创建必要的鼠标处理程序。
将您的代码更改为:
$('#clearer').click(function() { var activeObject = canvas.getActiveObject(); if(activeObject === undefined || activeObject === null){ // removed .mousedown() var yPos = e.pageY-100; var xPos = e.pageX-100; $('.tooltip').css({ 'top': yPos, 'left': xPos }).fadeIn(200).html('Choose Layer to Delete!') $('.tooltip').delay(3000).fadeOut(200); )}else { canvas.remove(activeObject); }; });
它应该按预期工作。
尝试
$('.tooltip').css({ 'top': yPos, 'left': xPos }).fadeIn(200,function(){$(this).delay(3000).fadeOut(200);}).html('Choose Layer to Delete!');
并删除下一行$('.tooltip').delay(3000).fadeOut(200);