0

私の状況:キャンバスからレイヤーを選択せず​​にユーザーが削除ボタン(ごみ箱アイコン)をクリックすると、ツールチップが表示され、レイヤーを選択するようにアドバイスされます。すべて問題ありませんが、fadeIn と Out が正しく起動しません。最初のクリックでは表示されませんが、2 回目では表示されます。レイヤーを選択せず​​にもう一度クリックすると、ツールチップが突然制御されずに点滅し始めます...

コード:

$('#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

試す

$('.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 に答える
0

.mouseup()#clearer 要素がクリックされるたびにハンドラーを作成すると、問題が発生します。クリックは、1 つの要素でのマウスダウンとマウスアップの間の構成です。そのため、最初のクリック後にのみ必要なマウスアップ ハンドラーが作成されるため、最初のクリックではフェードが発生しません。

コードを次のように変更します。

$('#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 に答える