Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2020, 09:36
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Добавление класса текущему элементу
Доброго времени суток!
В товаре есть кнопка "Отложить".
<div class="put_off favoritesDiv">
<a class="favorItem text favorites buttonItem" onclick="addFavoriteItem" id="1356" data-item="1356">Отложить</a>
</div>

На данный момент при клике на ссылку добавляется класс "activeFavorite"
$('.favoritesDiv').addClass('activeFavorite');

Но дело в том, что на одной странице есть другой элемент с таким же классом и при клике на него класс добавляется также кнопке "Отложить", а этого не нужно.

Чтобы этого избежать, делаю так:
$(this).addClass('activeFavorite');

В данном случае класс применяется самой ссылке, а необходимо диву.

Подскажите, пожалуйста, каким образом можно сделать так, чтобы класс применялся именно текущему диву?
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2020, 09:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(this).parent()...
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2020, 10:06
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas Посмотреть сообщение
$(this).parent()...
- имеете ввиду так?
$(this).parent().addClass('activeFavorite');

В данном случае не срабатывает
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2020, 10:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от _marisha
В данном случае не срабатывает
вы что-то не договариваите
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2020, 10:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

_marisha,

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .favoritesDiv.activeFavorite {
        border: 1px solid #FF0000;
    }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
  $(".favorItem").on("click", function() {
     $(this).parent().addClass('activeFavorite');
})
});
  </script>
</head>
<body>
<div class="put_off favoritesDiv">
<a class="favorItem text favorites buttonItem"  id="1356" data-item="1356">Отложить</a>
</div></body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2020, 12:41
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Походу понятно почему вариант с
$(this).parent().addClass('activeFavorite');
не срабатывает.
В консоли в this находится структура $.ajax
Как все работает, при клике на кнопку срабатывает функция, в которой идет ajax на файл, где в зависимости от пользователя происходит обработка результата. Данный результат возвращается в функцию и происходит добавление/удаление классов на основании полученных данных.
Запутано...
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2020, 13:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну так по результату ответа сервера и действуйте. Кстати, "Отложить" всегда или же все-таки только у тех, которые не добавлялись?
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2020, 13:18
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas Посмотреть сообщение
Ну так по результату ответа сервера и действуйте.
- действую Только в этом случае вариант с this не срабатывает
Или что-то делаю не так?

Сообщение от laimas Посмотреть сообщение
Кстати, "Отложить" всегда или же все-таки только у тех, которые не добавлялись?
- "Отложить" только тем, которые не добавлялись. С "отложить" всё работает, а вот с "отложено" класс добавляется самой ссылке, а не диву. Где-то видимо упускаю момент...
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2020, 13:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от _marisha
Или что-то делаю не так?
Потому, что в success this уже другой контекст, сохраните источник события (this) до ajax, а затем по ответу используйте его.

PS. Если сам источник не нужен далее, то сразу сохранить родителя:

var parent = $(this).parent();
$.ajax({
    ....
    success: function(d) {
         //если условия ... и 
         parent.addClass.... 
    }
})

Последний раз редактировалось laimas, 07.04.2020 в 13:35.
Ответить с цитированием
  #10 (permalink)  
Старый 07.04.2020, 13:56
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas Посмотреть сообщение
Потому, что в success this уже другой контекст, сохраните источник события (this) до ajax, а затем по ответу используйте его.

PS. Если сам источник не нужен далее, то сразу сохранить родителя:

var parent = $(this).parent();
$.ajax({
    ....
    success: function(d) {
         //если условия ... и 
         parent.addClass.... 
    }
})
- делаю как Вы сказали, но в parent нет самого дива. Результат
console.log(parent)
выглядит так
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление custom класса как item класса tab. Unrecognized alias: widget. Postgeograph ExtJS 6 13.12.2018 11:56
При добавление класса к элементу не добавляется его стиль! AciDWarrioR (X)HTML/CSS 6 23.11.2015 17:13
Клик по одному элементу добавление класса у второго элемента, кликаем по третьему эле aleksandr8i Общие вопросы Javascript 1 24.09.2015 11:25
Добавление класса определенному элементу jQuery MasterDmx Events/DOM/Window 2 26.08.2014 14:26
Добавление класса элементу при прокрутке к этому элементу patriot94 Общие вопросы Javascript 5 18.03.2014 12:41