2013-07-16 3 views
2

Вот код:JQuery Простой Переключение не работает

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery.min.js"></script> 
     <script> 
      function showSuccess() { 
       $('#successDiv > p').empty().append("Saving the Device Whitelist was a success.<br />Server Resonse: Sucess"); 
       $('#successDiv').toggle().delay(4000).toggle(); 
      } 

      $(function() { 
       $('#successDiv').on('click', function() { 
        showSuccess(); 
       }) 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="successDiv" style="display:none"> 
      <p>Hello</p> 
     </div> 

     <input type="button" id="showSuccess" value="Show Success" /> 
    </body> 
</html> 

По какой-то причине переключатель не работает ...

Вот jsfiddle

+0

Что такое ожидаемое поведение? – Adam

+0

Div предназначен для отображения на 4 секунды, а затем уходит –

ответ

2

Первая проблема: вы привязываете клик к неправильному элементу; второй: он выглядит, как вы должны установить четкие тайминги при использовании delay:

function showSuccess() { 
    $('#successDiv > p').empty().append("Saving the Device Whitelist was a success.<br />Server Resonse: Sucess"); 
    $('#successDiv').toggle(100).delay(4000).toggle(100); 
} 

$(function() { 
    $('#showSuccess').on('click', showSuccess); 
}); 

Fiddle

Upd: проблема с таймингами ограничение JQuery:

Только последующие события в очереди задерживаются ; например, это будет , не задерживая формы без аргументов .show() или .hide(), которые не используют , используют очередь эффектов.

(Из delaydocumentation)

+0

Да, спасибо за это, есть ли причина, чтобы установить время переключения при цепочке? –

+0

Это требование jQuery:> Задерживаются только последующие события в очереди; например, это не задерживает формы без аргументов .show() или .hide(), которые не используют очередь эффектов. (Получил это [здесь] (http://api.jquery.com/delay/)). Я добавляю эту заметку, чтобы ответить будущим посетителям. – Tommi

+0

Большое спасибо за вашу помощь !!! –

0
$('#successDiv').on('click', function() { 

должен быть

$('#showSuccess').on('click', function() { 

и

$('#successDiv').toggle().delay(4000).toggle(); 

должен быть

$('#successDiv').show(0).delay(4000).hide(0); 

здесь скрипку http://jsfiddle.net/L35rW/

+0

все еще не работает –

+0

исправлено. извините –

0

Вот рабочий пример: http://jsfiddle.net/js3E6/1/

$(function() { 
    $('#showSuccess').on('click', function() { 

     $('#successDiv > p').html("Saving the Device Whitelist was a success.<br />Server Resonse: Sucess"); 
     $('#successDiv').slideDown().delay(4000).slideUp(); 
    }); 
}); 
0

если вы удалите последнюю часть delay(4000).toggle(); она работает. http://jsfiddle.net/582Z3/

$('#successDiv').toggle(); 

Зачем вам задержка?

Btw также измените идентификатор в событии click на $('#showSuccess').

Смежные вопросы