0

我的情况:如果用户在没有从我的画布中选择图层的情况下单击删除按钮(垃圾箱图标),我的工具提示应该会出现并建议他选择一个。一切都很好,但淡入和淡出不会正确触发。第一次点击它不显示,但在第二次。如果您在没有选择图层的情况下再次单击,.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 游乐场

感谢您提供任何帮助或提示,并为我的英语不好表示抱歉:|

4

2 回答 2

0

.mouseup()每次单击 #clearer 元素时,您都会创建一个处理程序,这会导致您的问题。单击是在一个元素上的 mousedown 和 mouseup 之间的组合。这就是为什么在第一次单击时不会触发淡入淡出的原因,因为只有在第一次单击之后,才会创建必要的 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);
};
});

它应该按预期工作。

于 2013-11-07T20:16:09.603 回答
0

尝试

$('.tooltip').css({
            'top': yPos,
            'left': xPos
        }).fadeIn(200,function(){$(this).delay(3000).fadeOut(200);}).html('Choose Layer to Delete!');

并删除下一行$('.tooltip').delay(3000).fadeOut(200);

于 2013-11-07T20:10:32.267 回答