102 lines
2.2 KiB
JavaScript
102 lines
2.2 KiB
JavaScript
var Tree = function (element, options)
|
|
{
|
|
this.$element = $(element);
|
|
this.options = $.extend({}, $.fn.tree.defaults, options);
|
|
this.init();
|
|
};
|
|
|
|
Tree.prototype =
|
|
{
|
|
constructor: Tree,
|
|
|
|
init: function ()
|
|
{
|
|
var that = $(this);
|
|
|
|
this.$element.find("label.tree-toggler, .icon-folder-close, .icon-folder-open").click(
|
|
function ()
|
|
{
|
|
if ($(this).parent().parent().children("ul.tree").is(":visible"))
|
|
{
|
|
$(this).parent().children(".icon-folder-open")
|
|
.removeClass("icon-folder-open")
|
|
.addClass("icon-folder-close");
|
|
|
|
that.trigger('collapse');
|
|
}
|
|
else
|
|
{
|
|
$(this).parent().children(".icon-folder-close")
|
|
.removeClass("icon-folder-close")
|
|
.addClass("icon-folder-open");
|
|
|
|
that.trigger('expand');
|
|
}
|
|
$(this).parent().parent().children("ul.tree").toggle(300);
|
|
}
|
|
);
|
|
this.$element.find("li").click(
|
|
function ()
|
|
{
|
|
$('.tree-selected').removeClass("tree-selected");
|
|
$('li input:checked').parent().addClass("tree-selected");
|
|
}
|
|
);
|
|
|
|
return $(this);
|
|
},
|
|
|
|
collapseAll : function($speed)
|
|
{
|
|
this.$element.find("label.tree-toggler").each(
|
|
function()
|
|
{
|
|
$(this).parent().children(".icon-folder-open")
|
|
.removeClass("icon-folder-open")
|
|
.addClass("icon-folder-close");
|
|
$(this).parent().parent().children("ul.tree").hide($speed);
|
|
}
|
|
);
|
|
|
|
return $(this);
|
|
},
|
|
|
|
expandAll : function($speed)
|
|
{
|
|
this.$element.find("label.tree-toggler").each(
|
|
function()
|
|
{
|
|
$(this).parent().children(".icon-folder-close")
|
|
.removeClass("icon-folder-close")
|
|
.addClass("icon-folder-open");
|
|
$(this).parent().parent().children("ul.tree").show($speed);
|
|
}
|
|
);
|
|
|
|
return $(this);
|
|
},
|
|
};
|
|
|
|
$.fn.tree = function (option, value)
|
|
{
|
|
var methodReturn;
|
|
var $set = this.each(
|
|
function ()
|
|
{
|
|
var $this = $(this);
|
|
var data = $this.data('tree');
|
|
var options = typeof option === 'object' && option;
|
|
|
|
if (!data){
|
|
$this.data('tree', (data = new Tree(this, options)));
|
|
}
|
|
if (typeof option === 'string') {
|
|
methodReturn = data[option](value);
|
|
}
|
|
}
|
|
);
|
|
|
|
return (methodReturn === undefined) ? $set : methodReturn;
|
|
};
|
|
|
|
$.fn.tree.Constructor = Tree; |