このツールチップコードにタイムアウトを追加して、マウスをすぐにではなくしばらくしてからホバーした場合にのみ表示されるようにしたい... setTimeout()
を追加しようとしましたが、その方法がわかりませんでした。 clearTimeout()
を使用して、ツールチップがマウスアウトで非表示にならないようにします。手伝ってくれますか?
// -----------------------------------------------
// TOOLTIP MOUSE HOVER
// -----------------------------------------------
function mcTooltip() {
$('.mcTxb').mousemove(function(e) {
var mcHoverText = $(this).attr('alt');
var mcTooltip = $('.mcTooltip');
$(mcTooltip).text(mcHoverText).show('fast');
$(mcTooltip).css('top', e.clientY + 10).css('left', e.clientX + 10);
}).mouseout(function() {
var mcTooltip = $('.mcTooltip');
$(mcTooltip).hide('fast');
});
}
mcTooltip();
私はこれを試しました:
// -----------------------------------------------
// TOOLTIP MOUSE HOVER
// -----------------------------------------------
function mcTooltip() {
$('.mcTxb').mousemove(function(e) {
var mcHoverText = $(this).attr('alt');
var mcTooltip = $('.mcTooltip');
setTimeOut(function(){
$(mcTooltip).text(mcHoverText).show('fast');
}, 300);
$(mcTooltip).css('top', e.clientY + 10).css('left', e.clientX + 10);
}).mouseout(function() {
var mcTooltip = $('.mcTooltip');
$(mcTooltip).hide('fast');
});
}
mcTooltip();
var my_timer;
$('.mcTxb').hover(
function () {
my_timer = setTimeout(function () {
//do work here
}, 500);
},
function () {
clearTimeout(my_timer);
}
);
これは、要素をmouseover
するとwhateverを実行する前に0.5秒待機し、半分以内にmouseout
を実行すると、whateverは発生しません。 2番目。
1つのオプションは、 hoverIntent プラグインを使用して目的を達成することです。
この質問は古いですが、私は他の人のために答えると思いました。タイムアウトが機能しなかった主な理由は、「setTimeOut」の場合でした。ラクダがアウト部分をこぶすることはできません。その「setTimeout」。
hover()
を使用してください、それはより少ないコードです(そしてそれは常に良いです、IMO)。そのようです:
function mcToolTip() {
$(".mcTxb").hover(function(){
// mouseover stuff here
$("element").delay(3000).show(); // 3 second delay, then show
}, function(){
// mouseout stuff here
});
}
setTimeoutは、マウスオーバーまたはホバーでは機能しません。 .delay()を使用しても安全です。
setTimeout(function(){
$(mcTooltip).text(mcHoverText).show('fast');
}, 300);
// use this instead.
$(mcTooltip).text(mcHoverText).delay(3000).show('fast');