0

ここで更新 (修正済み) フィドル

キャッチされない RangeError: 最大呼び出しスタック サイズを超えました

これは、要素の上にマウスを置いたときに表示されるシンプルなカスタマイズされたタイトルです。数回表示すると壊れます。

function showtitle(title) {

  $('.button').bind('mousemove', function(e){
    $('.message').fadeIn(600);
    var message = $('.message').css({
      'position' : 'absolute',
      'left' : e.pageX,
      'top'  : e.pageY + 25
    });
    var print = title;
    $('.message').html('<span>' + print + '</span>');

  });

}
function hidetitle() {
  $('.message').hide();
}
4

2 に答える 2

5

mousemoveマウスが要素の上に移動するたびにイベントを再バインドしていますが、決して離していません。

function moveHandler(e) {
    $('.message').fadeIn(600);

    var message = $('.message').css({
        position: 'absolute',
        left: e.pageX,
        top: e.pageY + 25
    });

    $('.message').empty().append($('<span>', {text: title}));
}

function showtitle(title) {
    $('.button').bind('mousemove', moveHandler);
}

function hidetitle() {
    $('.message').hide();
    $('.button').unbind('mousemove', moveHandler);
}

mousemoveまた、イベントを常にオンにし、CSS を使用:hoverしてツールチップを表示および非表示にすることもできます。

これは、ブラウザーのイベント ループが原因ではなく、jQuery のイベント処理または jQuery のアニメーションのキューイングが原因であると推測しています。また、適切なメッセージを1 回フェード インし、同時にそのテキストを設定する必要がありますshowtitle。マウスが動くたびにではありません。

于 2013-09-28T22:36:05.030 に答える
0

mousemove を無名関数にバインドしている可能性があります。そのイベントが発生するたびに、関数が再度作成されます。イベントにバインドする前に関数を定義してみてください。

于 2013-09-28T22:37:12.787 に答える