Мне нужен способ выполнить некоторую функцию 'whileonmouseover' для продолжения анимации в то время как верхние мячи мыши по элементу...
Например, учитывая эту функцию:
$(document).ready(function()
{
function doAlert()
{
alert(1);
}
$('#button').hover(function()
{
doAlert();
});
});
Предупреждение будет стрелять однажды как парения мыши по #button. Мне нужен способ продолжить иметь тот аварийный огонь, в то время как мышь остается по #button...
Я попытался делать некоторую функциональную рекурсию для продолжения предупреждения, пока триггер не установлен, заставив это остановиться:
$(document).ready(function()
{
var doLoop = true;
function doAlert()
{
if (!doLoop) return;
alert(1);
doAlert();
}
$('#button').hover(function()
{
doAlert();
}, function()
{
doLoop = false;
});
});
Но это перестало работать. Кажется, что функция полностью игнорирует 'doLoop = ложное' присвоение в 'парении прочь'.
Какой-либо способ выполнить это?
Я бы рекомендовал установить интервал вместо рекурсии, потому что, предполагая, что окончательное решение не просто предупреждает, а делает что-то неблокирующее, рекурсивно при наведении курсора может быстро вызвать перегрузку памяти и отсутствие реакции.
Примерно так:
var hoverInterval;
function doStuff() {
// Set button's background to a random color
$("#button").css("background", "#" + Math.floor(Math.random() * 16777215).toString(16));
}
$(function() {
$("#button").hover(
function() {
// call doStuff every 100 milliseconds
hoverInterval = setInterval(doStuff, 100);
},
function() {
// stop calling doStuff
clearInterval(hoverInterval);
}
);
});
Я бы предложил вынести следующую часть за рамки функции $(document).ready():
var doLoop = true;
function doAlert()
{
if (!doLoop) return;
alert(1);
doAlert();
}
Поэтому попробуйте вместо нее этот код:
var doLoop = true;
function doAlert()
{
if (!doLoop) return;
alert(1);
doAlert();
}
$(document).ready(function()
{
$('#button').hover(function()
{
doAlert();
}, function()
{
doLoop = false;
});
});