Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Метод toggle у чекбокса (https://javascript.ru/forum/misc/34227-metod-toggle-u-chekboksa.html)

zzzzzz 25.12.2012 06:38

Метод toggle у чекбокса
 
http://jsfiddle.net/eYKH4/1/

если на чекбоксе установлен метод toggle(js), то галочка не ставится. Кто скажет почему?

Из примера видно, что js работает!!!

Заранее спасибо за ответ

tsigel 25.12.2012 09:47

Зачем так, когда можно так:
$('.synchronize').click(function(){
     $(this).toggleClass('on');
 }
);​

Так будет работать.

Точно не уверен, но скорее всего проблема в том что не указан "click", происходит только вызов функции, может там где-то в jQuery в этой функции прописано return false или что-то в этом роде.

Вообще из jQuery желательно брать только самые удобные методы и обращение к селекторам при загрузке страницы, остальное следует делать обычным javascript (так же желательно использовать то что знаешь примерно как напосано во избежание таких побочных эффектов), это сильно повысит скорость выполнения скриптов и повысит ваши знания.

Deff 25.12.2012 13:55

<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>

zzzzzz 25.12.2012 16:35

припер пользователя DEFF учел, но по сути мне нужно запускать 2 функции: 1-когда ставим галочку 2-когда ее убираем. Функции обе разные

tsigel 25.12.2012 16:51

<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>

zzzzzz 26.12.2012 17:22

идентификатор по которому запускается та или иная функция - это .on?
ИМХО не изящное рещение, если ошибаюсь поправьте

tsigel 26.12.2012 17:56

обычное решение с использованием "флага".

Хочешь красивые решения пиши с помощью ООП и прототипов.
Запуск функции можно сделать с условия "выбранности" чекбокса, но по сути это тот-же флаг и разницы нет.

zzzzzz 26.12.2012 18:02

Вы правы, спасибо за помощь

Deff 26.12.2012 18:47

Цитата:

Сообщение от zzzzzz
идентификатор по которому запускается та или иная функция - это .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, время: 18:29.