Метод toggle у чекбокса
http://jsfiddle.net/eYKH4/1/
если на чекбоксе установлен метод toggle(js), то галочка не ставится. Кто скажет почему? Из примера видно, что js работает!!! Заранее спасибо за ответ |
Зачем так, когда можно так:
$('.synchronize').click(function(){ $(this).toggleClass('on'); } ); Так будет работать. Точно не уверен, но скорее всего проблема в том что не указан "click", происходит только вызов функции, может там где-то в jQuery в этой функции прописано return false или что-то в этом роде. Вообще из jQuery желательно брать только самые удобные методы и обращение к селекторам при загрузке страницы, остальное следует делать обычным javascript (так же желательно использовать то что знаешь примерно как напосано во избежание таких побочных эффектов), это сильно повысит скорость выполнения скриптов и повысит ваши знания. |
<script src="http://code.jquery.com/jquery-latest.js"></script> <input class="synchronize" type="checkbox" /> <script type="text/javascript"> $(".synchronize").change(function(){ $(this).toggleClass("on"); alert($(this).attr("class")) }); </script> |
припер пользователя DEFF учел, но по сути мне нужно запускать 2 функции: 1-когда ставим галочку 2-когда ее убираем. Функции обе разные
|
<script src="http://code.jquery.com/jquery-latest.js"></script> <input class="synchronize" type="checkbox" /> <script type="text/javascript"> function funcName1() { alert('Функция 1! (добавлен класс "on")') } function funcName2() { alert('Функция 2! (удалён класс "on")') } $('.synchronize').click(function(){ $(this).toggleClass('on'); if ($(this).hasClass('on')) { funcName1(); } else { funcName2(); }; }); </script> |
идентификатор по которому запускается та или иная функция - это .on?
ИМХО не изящное рещение, если ошибаюсь поправьте |
обычное решение с использованием "флага".
Хочешь красивые решения пиши с помощью ООП и прототипов. Запуск функции можно сделать с условия "выбранности" чекбокса, но по сути это тот-же флаг и разницы нет. |
Вы правы, спасибо за помощь
|
Цитата:
<script src="http://code.jquery.com/jquery-latest.js"></script> <input class="synchronize" type="checkbox" /> <script type="text/javascript"> function funcName1(a) { alert('Функция 1! class='+a.attr("class")) } function funcName2(a) { alert('Функция 2 ! class='+a.attr("class")) } $('.synchronize').click(function(){ $(this).toggleClass('on'); if ($(this).hasClass('on')) { funcName1($(this)); } else { funcName2($(this)); }; }); </script> |
Часовой пояс GMT +3, время: 08:25. |