jQuery代理无法获取正确的上下文

时间:2018-12-17 14:48:20

标签: javascript jquery jquery-boilerplate

我正在使用jQuery boilerplate,并试图从另一个函数中调用一个函数,并认为Proxy可能是实现该目标的方法。不幸的是,我似乎无法使它正常工作。

下面是我正在使用的代码的精简版,但是您应该可以理解。在ajax success方法内部,我试图调用函数customSelect,以便可以对运行ajax时创建的元素重新应用选择样式。不幸的是,我无法使它工作:

;( function( $, window, document, undefined ) {
    "use strict";

    var pluginName = "serviceFinder",
        defaults = {
            propertyName: "value"
        };


    // The actual plugin constructor
    function Plugin ( element, options ) {
        this._name = pluginName;
        this.init();
    }


    // Avoid Plugin.prototype conflicts
    $.extend(Plugin.prototype, {
        init: function() {
            this.customSelect("lm-service-finder__field--select");
        },


        /**
         * When a user selects a product
         */
        selectProduct: function(e){
            // Send the ID of the selected product so that we can get the variations for that product.
            $.ajax({
                type: 'POST',
                url: themeVars.ajax,
                dataType: 'json',
                data: {
                    'product_id': selectedProductId,
                    action: 'servicefinder_get_product_attributes' //this is the name of the AJAX method called in WordPress
                }, success: function (result) {
                    $.proxy(Plugin.customSelect);
                },
                error: function () {
                    console.log("error");
                }
            });
        },


        /**
         * Custom select field styling
         */
        customSelect: function(selector) {
            console.log("Apply select field styling");
        },
    });


    $.fn[ pluginName ] = function( options ) {
        return this.each( function() {
            if ( !$.data( this, "plugin_" + pluginName ) ) {
                $.data( this, "plugin_" +
                    pluginName, new Plugin( this, options ) );
            }
        } );
    };

} )( jQuery, window, document );

我在这里看到了其他两个类似的问题,但是没有答案。希望有人可以提供帮助?

0 个答案:

没有答案