开发者

jquery fileTree remove class expanded from children

开发者 https://www.devze.com 2023-03-17 04:23 出处:网络
i\'m using the FileTree jquery plugin from http://labs.abeautifulsite.net/projects/js/jquery/fileTree/demo/

i'm using the FileTree jquery plugin from http://labs.abeautifulsite.net/projects/js/jquery/fileTree/demo/

i'm trying to fix one bug

i lost all day trying different thing but i'm a beginner at javascript and i had no luck

i modified the code a bit but the problem is the same even with the original code

to see the bug go to the link above from the first example select "documents" then "excel docs" then "documents" again the li element containing "excel docs" has the class "expanded" even if the parent "documents" is closed

how can i remove the class from all children when a parent is closed ?

this is my last version of the code

if(jQuery) (function($){

    $.extend($.fn, {
        fileTree: function(o, h, dire) {
            // Defaults
            if( !o ) var o = {};
            if( o.root == undefined ) o.root = '/';
            if( o.script == undefined ) o.script = 'jqueryFileTree.php';
            if( o.folderEvent == undefined ) o.folderEvent = 'click';
            if( o.expandSpeed == undefined ) o.expandSpeed= 500;
            if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
            if( o.expandEasing == undefined ) o.expandEasing = null;
            if( o.collapseEasing == undefined ) o.collapseEasing = null;
            if( o.multiFolder == undefined ) o.multiFolder = true;
            if( o.loadMessage == undefined ) o.loadMessage = 'Loading...';
            if(o.expanded == undefined) o.expanded = '';

            $(this).each( function() {
                function showTree(c, t) {
                    $(c).addClass('wait');
                    $(".jqueryFileTree.start").remove();
                    $.post(o.script, { dir: t }, function(data) {
                        $(c).find('.start').html('');
                        $(c).removeClass('wait').append(data);
                        if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
                        bindTree(c);
                        if (o.expanded != null) {
                            $(c).find('.directory.collapsed').each(function (i, f) {
                                if ((o.expanded).match($(f).children().attr('rel'))) {
                                    showTree($(f), escape($(f).children().attr('rel').match(/.*\//)));
                        开发者_Python百科            $(f).removeClass('collapsed').addClass('expanded');
                                };
                            });
                        };
                    },"html");
                };
                function bindTree(t) {
                    $(t).find('LI A').bind(o.folderEvent, function() {
                        if( $(this).parent().hasClass('directory') ) {
                            if( $(this).parent().hasClass('collapsed') ) {
                                // Expand
                                dire($(this).attr('rel'));
                                if( !o.multiFolder ) {
                                    $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
                                    $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
                                }
                                $(this).parent().find('UL').remove(); // cleanup
                                showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
                                $(this).parent().removeClass('collapsed').addClass('expanded');
                            } else {
                                // Collapse
                                $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
                                $(this).parent().removeClass('expanded').addClass('collapsed');
                            }
                        } else {
                            h($(this).attr('rel'));
                        }
                        return false;
                    });
                    if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
                }
                $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
                showTree( $(this), escape(o.root) );
            });
        }
    });
})(jQuery);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号