Я пытаюсь использовать такую переменную данных ... $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);
Небольшая боковая заметка. Я считаю, что в этом случае var $this = $(this);
не нужен. В пространстве имен $.fn
this уже будет объектом jQuery.
хорошо, звучит хорошо, но мои навыки работы с javascript еще не настолько развиты. Может быть, у вас есть мне пример?
Кажется, этот подход работает правильно. jsfiddle.net/ctd3rn9g Вы уверены, что значение не обновляется?
да, ты прав ... работает.
Но лучше использовать
window.console.debug( $this.data('menu') )
вместо
window.console.debug( $this.data() )
Если вы пытаетесь обновить значение в объекте, хранящемся в
data
, вам необходимо изменить значение свойства в объекте, а затем снова вызвать установщикdata()
, чтобы обновить его.