Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]jQuery konwersja na JS
Forum PHP.pl > Forum > Przedszkole
topcio
Witajcie, czy mogę prosić by poniższy skrypt napisać w czystym JS, jakoś sam nie potrafię tego zrobić.

  1. $(document).off('click.choose_item');
  2. $(document).on('click.choose_item', '.choose_item', function () {
  3. $('.choose_item').not($(this)).removeClass('open');
  4. $(this).toggleClass('open');
  5. });
  6. $(document).on('click.choose_item', function (event) {
  7. if ($(event.target).closest('.choose_item').length === 0) {
  8. $('.choose_item').removeClass('open');
  9. }
  10. });
viking
Problemem tutaj będzie namespace. Musiałbyś stworzyć klasę lub obiekt do przechowywania zdarzeń.
topcio
no właśnie tak zrobiłem Viking
  1. const test = [...document.querySelectorAll('.choose_item')];
  2.  
  3. const tablica = {
  4. defaultImage: "<img class=\"item_grades\" src='images\\Frames\\[Common]_Item_Frame.png'>",
  5. defaultBackgroundImage: "url('/images/Speed_Up/Choose_Item.png')",
  6. HTML: "",
  7. }
  8.  
  9. function selectDiv() {
  10. if (tablica.HTML == this.dataset.option) {
  11. this.classList.remove('open');
  12. tablica.HTML = "";
  13. this.innerHTML = tablica.defaultImage;
  14. this.style.backgroundImage = tablica.defaultBackgroundImage;
  15. document.querySelector('.items_div').style.display = "none";
  16. } else {
  17. tablica.HTML = this.dataset.option;
  18. test.forEach(element => element.classList.remove('open'))
  19. test.forEach(element => element.innerHTML = tablica.defaultImage)
  20. test.forEach(element => element.style.backgroundImage = tablica.defaultBackgroundImage)
  21. this.classList.add('open');
  22. this.innerHTML = "";
  23. this.style.backgroundImage = 'none';
  24. document.querySelector('.items_div').style.display = "flex";
  25. }
  26.  
  27. }
  28.  
  29. test.forEach(element => element.addEventListener('click', selectDiv))
  30.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.