Метод 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, время: 18:50. |