Некорректное выполнение условий функции
Вложений: 1
Есть объект, к которому применяется определенный класс в зависимости от значения атрибута "data". Задача в том, чтобы реализовать возможность изменения класса при клике на него. Все срабатывает только один раз, при повторном нажатии на объект ничего не происходит, хотя функция favoritecheck значение переменной получает.
Jquery активно изучаю около недели, поэтому самостоятельно разобраться не получается. Буду рад помощи. <div id="favorite" data="1"></div> $(document).ready(function () { var favorite = $("#favorite").attr("data"); // Присвоение переменной значения из data favoritecheck (favorite); // Направление переменной в функцию favoritecheck function favoritecheck () { if (favorite == 0) { // Функция добавляет класс объекту исходя из значения переменной $("#favorite").addClass("favorite0");} else { $("#favorite").addClass("favorite1");}; //alert(favorite); }; $("#favorite").click(function (){ if (favorite == 0) {favorite = 1} // Изменение значения переменной при клике на объект else {favorite = 0}; favoritecheck (favorite); // Направление переменной в функцию favoritecheck }); }); |
Фигня какая-то. Выкинь всю эту хрень. Че хочешь сделать то? Какой смысл в изменении атрибута?
|
VANIAN,
в строках 8 и 10 нет удаления иного класса |
danik.js,
Необходимо, чтобы скрипт присваивал объекту определенный класс на основе значения атрибута data (получаемого из базы данных) еще до клика, а после клика изменял. При этом нужно не просто добавить класс, а изменить переменную, чтобы отправить обновленное значение на сервер. Вот пример example. Может как-то можно упростить? JQuery изучаю недолго, поэтому не силен в нем. |
VANIAN,
function favoritecheck () { if (favorite==0) { // Функция добавляет класс объекту исходя из значения переменной $("#favorite").removeClass("favoriteAdded"); } else { $("#favorite").addClass("favoriteAdded"); }; }; заменить на function favoritecheck (add) { $("#favorite").toggleClass("favoriteAdded", add); }; |
Так это же чекбокс, просто с нестандартным внешним видом? Вот и отталкивайся от этого. Никакие классы не нужны, ибо :checked.
Смена состояния - событие change. Вместо твоего доклика выставляй checked на сервере, вместо data. Все просто ведь, нахер выдумывать? |
рони,
Спасибо, подправил, выглядит лаконичней. danik.js, Спасибо, с такой возможностью просто пока не знаком. |
Ладно, вариант без checkbox имеет право на жизнь, но мне по душе предложенный мной вариант: http://jsfiddle.net/kd4ef4ok/
|
danik.js,
Спасибо большое, то что нужно! |
Часовой пояс GMT +3, время: 04:35. |