Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как объединить функции и классы? (https://javascript.ru/forum/dom-window/74872-kak-obedinit-funkcii-i-klassy.html)

j0hnik 14.08.2018 09:59

Aetae,
разочарован??? хм... это что то обидное

Aetae 14.08.2018 10:08

Ага, три буквы. :)
(...нет, не те)

j0hnik 14.08.2018 10:23

держусь за голову как чувак на аватарке

senex 14.08.2018 11:14

От всех этих обьектов и функций толку никакого, поскольку они видны только в пределах своего блока $(function() {});

А вот обьект jQuery виден везде, потому к нему и надо присоединить новый пользовательский метод.

В jQuery это делается так:

$.fn.userMethod = function() {
    ...
  };


Конкретно для этой темы:

$(function() {  
  $.fn.classToggler = function(target, cls) {
    $(this).click(function() {
      let clss = cls || $(this).data('cls');
      $(target).toggleClass(clss);
    });
  };  
});

$(function() {
  $('.btn_cls').classToggler('.front');
});

$(function() {
  $('.btn_dis_cls').classToggler('#display', 'blue');
});


Второй аргумент cls опциональный для того, чтобы расширить функциональность нового метода - если понадобится работать с другим классом, а не с тем, что указан в data.

Rise 14.08.2018 11:41

senex,
document ready для расширения $.fn смысла не имеет, и this в нем уже равен $(this).

senex 14.08.2018 12:28

Согласен. Я уже давно не использую jquery и многое подзабыл. Тем те менее, этот вариант работает, по крайней мере у меня в хроме.

madeas 14.08.2018 18:28

Нашел где. Наверняка это код от домофона или дата конца света , хотя я еще не понял, что означают последние 35

Aetae 14.08.2018 21:17

Нет, это три английских символа, читающиеся как два русских.)


Часовой пояс GMT +3, время: 11:02.