0

私は単純なjqueryプラグインを書こうとしていますが、コードが巨大で乱雑になります.以下は、私が達成しようとしているアイデアを説明する部分です.

(function( $ ) {


 $.fn.pageBuilder = function( options ) {

    var lb = $.extend({

        self:                   this,
        modal_edit:             $("#vz_edit_modal"),
        modal_delete:           $("#vz_delete_modal"),
        onSlideElements:        function() {},
        onInsertElement:        function() {},
        onSaveElement:          function() {},

    }, options);


    // Disabling all link clicks default action within page layout builder
    this.on( 'click', 'a', function(event) {
        event.preventDefault();
    });


    // Changing class of layout builder elements while dragging for cursor change purposes
    this.on('mousedown', '.element .inner', function(){
        $(this).addClass('grabbing');
    }).on('mouseup', '.element .inner', function(){
        $(this).removeClass('grabbing');
    });     
 };

}( jQuery ));

したがって、このコードはプラグインのコアであり、jquery.myplugin.js に保持したいので、新しいファイル jquery.myplugin.elements.js を作成して次のコードを追加しようとすると:

(function( $ ){

 $.extend($.fn, {

    pageBuilder: function( options ){ 

        // Extended action
        this.find(".element a").on('click', function() {
            console.log( lb.modal_edit ); // Access to core plugin option
        });
    }

 });

})( jQuery );

問題は、拡張プラグインを機能させることができないことです。 this.find(".element a").on('click', function() { は機能しません。つまり、console.log が起動されないということです。 lb.modal_edit にアクセスしたり、間違った方法で拡張したりしないでください...

また、コアプラグインと拡張プラグインを機能させるには両方の機能が必要です。拡張プラグインはコア機能を無効にしないでください..

前もって感謝します。

4

1 に答える 1