0

以下にjQueryプラグインを作成しましたが、要素の同じインスタンスに対して再度呼び出すことができるようにしたいと思います。

プラグインは行きます...

(function($) {
    $.fn.myPlugin = function(options){

        var settings = {
            color: null
        };

        if (options) {  
            $.extend(settings, options);
        }

        return this.each(function(){
            var self = this;
            var pics = $('li', self);

            function refresh() {
                pics = $('li', self);
            };

            $('a', self).click(function(){
                pics.filter(':last').remove();
                alert(settings.color);
                refresh();
                return false;
            });
        });
    }
})(jQuery);

このページでは、これは...と呼ばれています。

$('#test').myPlugin({ color: 'blue' });

ここで、同じインスタンスに対して同じプラグインを呼び出しますがrefresh、他のすべての変数が同じである間(したがって、色は引き続きblue)、オプションとして文字列を渡します。

$('#test').myPlugin('refresh');

これにより、refresh()関数が実行されます。

上記でどうすればそれを達成できますか?

編集:明確にするために、jQueryUIがプラグインをどのように実行するかを考えています。ソート可能なプラグインでは、同じ要素で$("#sortable").sortable();実行できます。$("#sortable").sortable('refresh');これが私が達成しようとしていることです。

4

2 に答える 2

1

インスタンスをで保存し、インスタンスを.data()作成するときに確認できます。

何かのようなもの:

$.fn.doStuff = function () {
  var ob = $(this);
  var data = ob.data();
  if (data.doStuff !== undefined) {
    return data.doStuff;
  }
  doStuff;
});
于 2012-09-18T15:55:15.917 に答える
0
(function($) {
$.fn.myPlugin = function(options){
    var init = function($self, ops){
        $self.find("a").click(function(){
            pics.filter(':last').remove();
            alert(settings.color);
            refresh();
            return false;
        });
    };  

    this.refresh = function(){
       //your code here
    };

    return this.each(function(){
        var self = this;
        var pics = $('li', self);
        var settings = {
            color: null
        };    

        var ops = $.extend(true, settings, options);

        init($(this), ops);            

    });
}
})(jQuery);

このようなことを試してください。$()。myPlugin()。refresh();のようにrefresh()を呼び出すことができます。

于 2012-09-18T15:51:58.950 に答える