JQuery перезаписывает данные var в плагине

Я пытаюсь использовать такую ​​переменную данных ... $this.data().
Но у меня проблема с перезаписью элемента.

Я хочу использовать его, чтобы получить некоторый контроль и информацию о плагине.

(function($) {
    $.fn.myPlugin = function(options) {
        var $this = $(this);
        var set = $.extend(true, {}, $.fn.meSlideMenu.defaults, options);

        $this.data({
            'menu': {
                'expand': false,
                'initDone': false,
                'runFirtTime': true
            },
            'item': {
                'clicked': false,
                'lastItem': 'Nothing'
            },
            'button': {
                'isVisible': false,
                'clicked': false
            }
        });

        /* some more stuff */

        $this.data('button').isVisible = true; /* both doesn't work */
        $this.data().button.isVisible = true;

        /* some stuff again */

        $.fn.myPlugin.defaults = {
            'debug': false,
            'name': 'meSlideMenu',
            'speed': 195,
        };
    };
})(jQuery);

Если вы пытаетесь обновить значение в объекте, хранящемся в data, вам необходимо изменить значение свойства в объекте, а затем снова вызвать установщик data(), чтобы обновить его.

Rory McCrossan 01.05.2018 16:09

Небольшая боковая заметка. Я считаю, что в этом случае var $this = $(this); не нужен. В пространстве имен $.fn this уже будет объектом jQuery.

Taplar 01.05.2018 16:12

хорошо, звучит хорошо, но мои навыки работы с javascript еще не настолько развиты. Может быть, у вас есть мне пример?

Tabes 01.05.2018 16:22

Кажется, этот подход работает правильно. jsfiddle.net/ctd3rn9g Вы уверены, что значение не обновляется?

Taplar 01.05.2018 16:28

да, ты прав ... работает.

Tabes 02.05.2018 18:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
33
1

Ответы 1

Но лучше использовать

window.console.debug( $this.data('menu') )

вместо

window.console.debug( $this.data() )

Другие вопросы по теме