0

我有一个简单的 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

您必须传递当前的 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 回答
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 回答