После игры с функцией больше я пробовал работать с функцией обратного вызова, которая работала и позволяла мне обновлять любые настройки, какие я хотел. Единственное падение я должен был дождаться, когда текущий fade/timeout закончится до появления новых настроек. Это не то, что я хотел использовать b/c, если есть длинный тайм-аут (т.е. 20 секунд), пользователю придется ждать, пока он истек, прежде чем они увидели свои новые обновления в предварительном просмотре. Проблема, с которой я столкнулся, заключалась в том, что у меня не было возможности очистить таймауты, которые были установлены, b/c их timeoutID никогда не устанавливается в исходном плагине. поэтому я изменил оригинальный сценарий, чтобы установить их, чтобы я мог получить доступ к ним, а затем вызвать функцию innerfade
в функции innerfade:
$.innerfade.startTimeout = setTimeout(function() {
$.innerfade.next(elements, settings);
}, settings.timeout);
в следующей функции:
$.innerfade.continueTimeout = setTimeout((function() {
$.innerfade.next(elements, settings);
}), settings.timeout);
Теперь я может привязывать события к моим элементам формы, когда они меняются, очищать эти таймауты и переназначать функцию моему содержащему div.
$('#timeout').change(update);
function update()
{
if (typeof($.innerfade.startTimeout) != 'undefined') {
clearTimeout($.innerfade.startTimeout);
}
if (typeof($.innerfade.continueTimeout) != 'undefined') {
clearTimeout($.innerfade.continueTimeout);
}
$('#container').innerfade({[opts]});
}