Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.02.2015, 01:50
Новичок на форуме
Отправить личное сообщение для VANIAN Посмотреть профиль Найти все сообщения от VANIAN
 
Регистрация: 24.02.2015
Сообщений: 4

Некорректное выполнение условий функции
Есть объект, к которому применяется определенный класс в зависимости от значения атрибута "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 
});
});
Вложения:
Тип файла: zip test.zip (864 байт, 1 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 24.02.2015, 05:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Фигня какая-то. Выкинь всю эту хрень. Че хочешь сделать то? Какой смысл в изменении атрибута?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 24.02.2015, 08:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 29,133

VANIAN,
в строках 8 и 10 нет удаления иного класса
Ответить с цитированием
  #4 (permalink)  
Старый 24.02.2015, 15:45
Новичок на форуме
Отправить личное сообщение для VANIAN Посмотреть профиль Найти все сообщения от VANIAN
 
Регистрация: 24.02.2015
Сообщений: 4

danik.js,
Необходимо, чтобы скрипт присваивал объекту определенный класс на основе значения атрибута data (получаемого из базы данных) еще до клика, а после клика изменял. При этом нужно не просто добавить класс, а изменить переменную, чтобы отправить обновленное значение на сервер. Вот пример example.
Может как-то можно упростить? JQuery изучаю недолго, поэтому не силен в нем.
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2015, 16:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 29,133

VANIAN,
function favoritecheck () {
    if (favorite==0) {          // Функция добавляет класс объекту исходя из значения переменной
        $("#favorite").removeClass("favoriteAdded");
    }
    else {
          $("#favorite").addClass("favoriteAdded");
        };
};

заменить на

function favoritecheck (add) {
          $("#favorite").toggleClass("favoriteAdded", add);
};
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2015, 16:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так это же чекбокс, просто с нестандартным внешним видом? Вот и отталкивайся от этого. Никакие классы не нужны, ибо :checked.
Смена состояния - событие change. Вместо твоего доклика выставляй checked на сервере, вместо data. Все просто ведь, нахер выдумывать?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 24.02.2015, 17:24
Новичок на форуме
Отправить личное сообщение для VANIAN Посмотреть профиль Найти все сообщения от VANIAN
 
Регистрация: 24.02.2015
Сообщений: 4

рони,
Спасибо, подправил, выглядит лаконичней.

danik.js,
Спасибо, с такой возможностью просто пока не знаком.
Ответить с цитированием
  #8 (permalink)  
Старый 24.02.2015, 17:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ладно, вариант без checkbox имеет право на жизнь, но мне по душе предложенный мной вариант: http://jsfiddle.net/kd4ef4ok/
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 24.02.2015, 17:31
Новичок на форуме
Отправить личное сообщение для VANIAN Посмотреть профиль Найти все сообщения от VANIAN
 
Регистрация: 24.02.2015
Сообщений: 4

danik.js,
Спасибо большое, то что нужно!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержать выполнение функции cevut Общие вопросы Javascript 2 08.03.2014 19:11
onclick прервать выполнение функции wgt Events/DOM/Window 4 30.04.2013 20:52
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59