Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2012, 06:38
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

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

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

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

Заранее спасибо за ответ
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2012, 09:47
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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

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

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

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

Последний раз редактировалось tsigel, 25.12.2012 в 09:56.
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2012, 13:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2012, 16:35
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

припер пользователя DEFF учел, но по сути мне нужно запускать 2 функции: 1-когда ставим галочку 2-когда ее убираем. Функции обе разные
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2012, 16:51
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<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>
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2012, 17:22
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

идентификатор по которому запускается та или иная функция - это .on?
ИМХО не изящное рещение, если ошибаюсь поправьте
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2012, 17:56
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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

Хочешь красивые решения пиши с помощью ООП и прототипов.
Запуск функции можно сделать с условия "выбранности" чекбокса, но по сути это тот-же флаг и разницы нет.
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2012, 18:02
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

Вы правы, спасибо за помощь
Ответить с цитированием
  #9 (permalink)  
Старый 26.12.2012, 18:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Перенос id чекбокса в поле input azarubin Общие вопросы Javascript 7 14.01.2011 22:30
Как узнать у какого объекта вызван метод. Scalar Events/DOM/Window 4 26.03.2010 11:10
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29