【问题标题】:jQuery overwrite data var in PluginjQuery覆盖插件中的数据变量
【发布时间】:2018-05-01 14:03:11
【问题描述】:

我尝试使用这样的数据变量...$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()的setter进行更新它。
  • 小旁注。我相信在这种情况下var $this = $(this); 是不必要的。在$.fn 命名空间中,'this' 已经是一个 jQuery 对象。
  • 好吧,听起来不错,但我的 javascript 技能还没有那么成熟。也许你有我的例子?
  • 这种方法似乎工作正常。 jsfiddle.net/ctd3rn9g你确定没有更新值吗?
  • 是的,你是对的......它有效。

标签: javascript jquery arrays arraylist


【解决方案1】:

但最好用

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

而不是

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

【讨论】:

    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2015-10-20
    • 2021-01-06
    相关资源
    最近更新 更多