0

1 つのページで複数の要素を呼び出せるようにしたい単純な jQuery プラグインがあります。

今のところ、セレクターを明示的に宣言していますが、プラグインが呼び出されたオブジェクトに対して相対的なものにしたいと考えています。これどうやってするの?

(function($) {

    var MyPlugin = function(options){

        var plugin      = $(this); // The entire myPlugin object
        var element     = $("div#plugined div#element"); // An element in myPlugin
        var pluginChild = $( ); // Need selector of what plugin was called on + additional slider. ("div#plugined div#child")

        this.publicFunction = function() {
            // something...
        }

        var privateFunction = function() {
            // something private...
        }
    };

    $.fn.myPlugin = function(options) {

        var defaults = {
            // options
        }

        var options = $.extend(defaults, options);

        var myPlugin = new MyPlugin(options);

        $("div#plugined a.arrow").bind('click', function(e){ // Same problem. Need selector of what plugin was called on + additional slider. ("div#plugined div#child")
            e.preventDefault();
            myPlugin.publicFunction();
        });

        return myPlugin;
    };
})(jQuery);


<script type="text/javascript">
    $(window).load(function() {
        $('div#plugined').myPlugin();
    });
</script>
4

2 に答える 2

1

http://docs.jquery.com/Plugins/Authoringで、これを行う方法を説明する基本的なコードを見つけることができます。

この例を見てください:

(function( $ ){

  $.fn.tooltip = function( options ) {  

    // Create some defaults, extending them with any options that were provided
    var settings = $.extend( {
      'location'         : 'top',
      'background-color' : 'blue'
    }, options);

    return this.each(function() {        

      // Tooltip plugin code here

      $(this) // Will return the selected element

    });

  };
})( jQuery );

this.each ループでは、$(this) でコードを実行できます。これにより、選択した各要素が得られます。

于 2012-11-13T15:19:43.797 に答える
1

現在の jQuery セットを渡す必要があります。

var myPlugin = new MyPlugin(this, options);

内部myPluginで、次のようにします。

var MyPlugin = function($set, options){
    // ...
    var pluginChild = $set.find(".child");

thisコードでは がMyPluginインスタンスを参照しているため、 を呼び出すのはあまり意味がないことに注意してください$(this)

于 2012-11-13T15:13:48.377 に答える