0

jqueryプラグインを作ろうとしています

(function($){
    $.fn.myPlugin= function(opt){
        var defaults = {      
            num : '5';
        };

        return this.each(function(){
            var opt = $.extend(defaults, opt);   
            var template=$('<span class="active">aaaa</span>');
        });
    };
})(jQuery);

numテンプレートの回数をに追加するにはどうすればよいですか$(this)。プラグインが適用されているすべてのアイテムに対して for ループを実行すると問題が発生し、ページが過負荷になると思うので、 for ループ以外の方法はありますか。私が間違っている場合は修正してください..

4

1 に答える 1

0

変更はほとんどありません

  1. テンプレートのコピーを作成するには、ループを使用する必要があります
  2. テンプレートの作成をループの外に移動してthis.each()、プラグインの初期化ごとにループが 1 回実行されるようにすることができます (つまり$('div').myplugin()、ループは 1 回だけ実行されます)。
  3. 配列を使用してテンプレートのコピーを作成する
  4. eachループで、テンプレートの円錐形のコピーを追加します

このようなもの

(function ($) {
    var defaults = {
        num: 5
    };
    var template = '<span class="active">aaaa</span>';
    $.fn.myPlugin = function (opt) {
        var opt = $.extend(defaults, opt),
            array = [],
            $tmpl;
        for (var i = 0; i < opt.num; i++) {
            array.push(template);
        }
        $tmpl = $(array.join(''));


        return this.each(function () {
            $(this).append($tmpl.clone())
        });


    };
})(jQuery);

デモ:フィドル

于 2013-11-12T08:15:13.553 に答える