ページの読み込み時に画面に要素がポップアップして5秒後に非表示になります。私は、ユーザーがポップアップと対話しない場合に隠れるロジックを作成しようとしています。ユーザーが対話すると、表示されたままになります。ユーザーが要素を離れると、タイマーは再び非表示になります。誰かがロジックで私を助けることができる場合jquery hideインタラクションが発生しない場合の要素
<div id="popup">
Some popup
<input type="email" placeholder="enter email" />
</div>
<div id="popup-button" style="display:none;">
button to open the popup
</div>
// on load, 5 seconds starts
var goTimeout = setTimeout(function(){
$('#popup').css("display","none");
$('#popup-button').css("display","block");
}, 5000);
goTimeout;
// when mouse enter's popup element and/or user types in input
// should turn off the setTimeout
$(document).on("touchstart click mouseenter keyup", "#popup", function(e){
e.stopPropagation();
e.preventDefault();
console.log(e);
clearTimeout(goTimeout);
});
// when user mouse leave's the popup the timer starts again, but
// if user is still focused within input field, don't start until
// user clicks outside of the element
$(document).on("mouseleave", "#popup", function(e){
e.stopPropagation();
e.preventDefault();
console.log(e);
clearTimeout(goTimeout);
goTimeout;
});
等、それは私はあなたがのonmouseover、れるonmousedownのようなDOM要素を使用することができます
すべてのユーザーのやりとりが新しいgoTimeout関数を起動し、それを5秒単位で増分するとどうなりますか?私は私の自己を明確にしているが、私はあなたがそれを得ることを願って私は確信している –
goTimeout; - > goTimeout(); –
だから、あなたのコードの中で、 'goTimeout'は関数ではなく数字であることを除いて、基本的にそれを持っています。あなたは 'function hideAfterFive(){return setTimeout(...);}を使いたいかもしれません。タイムアウトを再度開始したいときはいつでも 'goTimeout = hideAfterFive();'を実行します。 –