JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<a href="#" class="favorite add_fav" data-id="1">お気に入りに追加</a><br>
<a href="#" class="favorite add_fav" data-id="2">お気に入りに追加</a><br>
<a href="#" class="favorite add_fav" data-id="3">お気に入りに追加</a><br>

JavaScript

$(function(){
  $(".favorite").on('click', function(){
    if ($(this).hasClass("add_fav")) {
      addFavorite( $(this).data('id'));
      elementLookFavorite(this, true);
    } else {
      deleteFavorite( $(this).data('id'));
      elementLookFavorite(this, false);
    }

    return false;
  });

  var elementLookFavorite = function(targetElement, isfavorite) {
    if (isfavorite) {
      $(targetElement).text("お気に入り解除");
      $(targetElement).toggleClass('add_fav', false);
    } else {
      $(targetElement).text("お気に入りに追加");
      $(targetElement).toggleClass('add_fav', true);
    }
  };

  var addFavorite = function(id) {
    var fav = loadCookieFavorite();
    if (fav.indexOf(String(id)) === -1) {
	    fav.push(id);
  	  saveCookieFavorite(fav);
    } else {
      window.alert('すでにお気に入りに入っています');
    }
  };

  var deleteFavorite = function(id) {
    var fav = loadCookieFavorite();
    var idx = fav.indexOf(String(id));
    if (idx !== -1) {
	    fav.splice(idx, 1);
  	  saveCookieFavorite(fav);
    }
  };
  
  var saveCookieFavorite = function(favArr) {
  	document.cookie = "favorite=" + favArr.join('/');
  };

  var loadCookieFavorite = function() {
    var cookies = document.cookie.split(';')

    for (idx in cookies) {
      if ( ! cookies.hasOwnProperty(idx)) {
        continue;
      }

      if (cookies[idx].indexOf('favorite=') == 0) {
        var favStr = cookies[idx].substr('favorite='.length);
        return (favStr.length==0) ? [] : favStr.split('/');
      }
    }

    return [];
  };
  
  // 初期表示はPHPでやる想定なのでここから下は必要ない
  (function(){
    var fav = loadCookieFavorite();
    $('.favorite').each(function(){
      if (fav.indexOf( String($(this).data('id')) ) !== -1) {
        // お気に入り中
        elementLookFavorite(this, true);
      } else {
        // お気に入りじゃない
        elementLookFavorite(this, false);
      }
    });
  })();
});