2015-05-29 2 views
2

У меня есть простой JQuery код, который выглядит следующим образом:JQuery slideToggle твердит

$("#resp-navigation").one("click", function() { 
    $("#navigation").slideToggle(500); 
}); 

Мой HTML выглядит следующим образом:

<div id="resp-navigation"> ... </div> 
<nav id="navigation"> ... </nav> 

Моя проблема заключается в том, что, когда я нажимаю на # resp- навигационный div, #navigation продолжает переключаться. Кто-нибудь знает, почему?

Спасибо.

+0

Предположим, что это еще не все, что вы кодируете. как ваш пример работает как ожидалось – paka

ответ

3

Если ваше намерение иметь '#navigation' деление с переключения каждый раз, когда кто-то нажимает на DIV '# соответственно-навигации', то:

Это: $("#resp-navigation").one

Должно быть: $("#resp-navigation").on

А потом он прекрасно работает в этой скрипке:

http://jsfiddle.net/us0dm62c/

Если Хау ver, ваше намерение состоит только в том, чтобы один раз переключать «#navigation» div (так что он исчезает и больше не может быть показан), тогда ваш код делает именно это без каких-либо изменений, как вы можете видеть в этой скрипте:

http://jsfiddle.net/gktnhhm5/

+0

нет, если идея использования этого события однажды http://api.jquery.com/one/ – paka

0

Как сказал @trevor, он должен быть включен ('click'), а не один ('click').

Если вы видите, что это ping ponging, я предполагаю, что у вас есть еще один прослушиватель, назначенный в другом месте кода, который делает то же самое.

+0

Это должен быть комментарий к ответу @ trevor; это не ответ на вопрос. –

0

Потому что вы используете .one (*). Использование как $(".btn1").click(function(){...} будет работать для многократного нажатия.