[jQuery] Serialize List Plugin

von in Development.

Mike Botsko hat ein nettes Plugin für jQuery geschrieben, mit dem eine unordered list <ul> “serialisiert” werden kann, um sie dann mit PHP o.ä. weiterverarbeiten zu können.
Der Quelltext des Plugins sieht wie folgt aus:

(function($){
    $.fn.serializelist = function(options) {
        /**
         * jQuery Serialize List
         * Copyright (c) 2009 Mike Botsko, Botsko.net LLC
         * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
         * Copyright notice and license must remain intact for legal use
         * Version 1
         *
         * Serialize an unordered or ordered list item. Optional ability
         * to determine which attributes are included. The serialization
         * will be read by PHP as a multidimensional array which you may
         * use for saving state.
         */
 
        // Extend the configuration options with user-provided
        var defaults = {
            prepend: 'ul',
            is_child: false,
            attributes: ['id', 'class']
        };
        var opts = $.extend(defaults, options);
        var serialStr     = '';
 
        if(!opts.is_child){ opts.prepend = '&amp;'+opts.prepend; }
 
        // Begin the core plugin
        this.each(function() {
            var ul_obj = this;
 
            var li_count     = 0;
            $(this).children().each(function(){
 
                for(att in opts.attributes){
                    serialStr += opts.prepend+'['+li_count+']['+opts.attributes[att]+']='+$(this).attr(opts.attributes[att]);
                }
 
                // append any children elements
                var child_base = opts.prepend+'['+li_count+'][children]';
                $(this).children().each(function(){
                    if(this.tagName == 'UL' || this.tagName == 'OL'){
                        serialStr += $(this).serializelist({'prepend': child_base, 'is_child': true});
                    }
                });
                li_count++;
            });
        });
        return(serialStr);
    };
})(jQuery);

Der Aufruf erfolgt über folgenden Befehl:

$(document).ready(function(){
    $('ul').serializelist();
});

1 Kommentar zu “[jQuery] Serialize List Plugin”

Kommentar verfassen

  • (will not be published)