jquery升级后,无法使用.data()访问函数内部的JS变量

JS variable access inside function impossible with .data() since jquery upgrade

本文关键字:访问 函数 内部 变量 JS data jquery      更新时间:2023-09-26

我的这部分代码可以追溯到2012年

(function ( $ ) {
$.widget('MMB.MMBBrowser', {
    options: {
        'path': {
            'media_data': null,
            'category_data': null
        },
        'translation': {
            'items_found': 'item(s) found',
            'are_you_sure': 'Are you sure?',
            'media_browser': 'Media Browser',
            'items_selected': 'item(s) selected',
            'select': 'Select'
        },
    },
    'browser': function (event) {
        $this = $(this).data('MMBBrowser');
        // outputs null
        console.log($this);
        // error, calls options to undefined
        $this.options.translation.media_browser;

        return false;
    },
});

由于全局更新(可能是jquery,或小部件库),我得到了Cannot read property 'options' of undefined

如何访问options.translation.media_browser变量?

编辑:在浏览器函数输出中添加console.log:

    console.log($(this).data('MMB.MMBBrowser')); // undefined
    console.log(this.options); // undefied
    console.log(this); // the button's DOM i clicked on

From http://jqueryui.com/upgrade-guide/1.10/#widget

(#8801)用于在.data()中存储实例的小部件插件名作为键。实例现在使用小部件名称空间。例如,现在存储了对话框小部件在ui-dialog而不是dialog中。参见1.9的弃用通知全部细节。

如果名称空间是MMB.MMBBrowser,那么您可以通过$(this).data('MMBMMBBrowser');访问它