簡體   English   中英

自從jquery升級以來,.data()無法在函數內部進行JS變量訪問

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

我有這部分代碼可以追溯到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

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

(#8801)窗口小部件通常僅使用插件名稱作為鍵將其實例存儲在.data()中。 現在,實例也使用小部件名稱空間存儲。 例如,對話框小部件現在存儲在ui-dialog中而不是對話框中。 有關完整的詳細信息,請參見1.9棄用通知。

如果名稱空間是MMB.MMBBrowser則可以通過$(this).data('MMBMMBBrowser');來訪問它$(this).data('MMBMMBBrowser');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM