123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /*if ($('.tree > ul') && !mytreebranch) {
- var mytreebranch = $('.tree').find('li:has(ul)').addClass('parent_li').attr('role', 'treeitem').find(' > span').attr('title', 'Collapse this branch');
- $('.tree > ul').attr('role', 'tree').find('ul').attr('role', 'group');
- mytreebranch.on('click', function (e) {
- var children = $(this).parent('li.parent_li').find(' > ul > li');
- if (children.is(':visible')) {
- children.hide('fast');
- $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
- }
- else {
- children.show('fast');
- $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
- }
- e.stopPropagation();
- });
- }*/
- /**
- * A jQuery plugin boilerplate.
- * Author: Jonathan Nicol @f6design
- */
- ;(function($) {
- // Change this to your plugin name.
- var pluginName = 'treeView';
-
- /**
- * Plugin object constructor.
- * Implements the Revealing Module Pattern.
- */
- function Plugin(element, options) {
- // References to DOM and jQuery versions of element.
- var el = element;
- var $el = $(element);
- options = $.extend({}, $.fn[pluginName].defaults, options);
- /**
- * Initialize plugin.
- */
- function init() {
- // Add any initialization logic here...
- var mytreebranch = $('.tree').find('li:has(ul)').addClass('parent_li').attr('role', 'treeitem').find(' > span').attr('title', 'Collapse this branch');
- $('.tree > ul').attr('role', 'tree').find('ul').attr('role', 'group');
- mytreebranch.on('click', function (e) {
- var children = $(this).parent('li.parent_li').find(' > ul > li');
- if (children.is(':visible')) {
- children.hide('fast');
- $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
- }
- else {
- children.show('fast');
- $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
- }
- e.stopPropagation();
- });
- hook('onInit');
- }
- /**
- * Example Public Method
- */
- function fooPublic() {
- // Code goes here...
- }
- /**
- * Get/set a plugin option.
- * Get usage: $('#el').demoplugin('option', 'key');
- * Set usage: $('#el').demoplugin('option', 'key', value);
- */
- function option (key, val) {
- if (val) {
- options[key] = val;
- } else {
- return options[key];
- }
- }
- /**
- * Destroy plugin.
- * Usage: $('#el').demoplugin('destroy');
- */
- function destroy() {
- // Iterate over each matching element.
- $el.each(function() {
- var el = this;
- var $el = $(this);
- // Add code to restore the element to its original state...
- hook('onDestroy');
- // Remove Plugin instance from the element.
- $el.removeData('plugin_' + pluginName);
- });
- }
- /**
- * Callback hooks.
- * Usage: In the defaults object specify a callback function:
- * hookName: function() {}
- * Then somewhere in the plugin trigger the callback:
- * hook('hookName');
- */
- function hook(hookName) {
- if (options[hookName] !== undefined) {
- // Call the user defined function.
- // Scope is set to the jQuery element we are operating on.
- options[hookName].call(el);
- }
- }
- // Initialize the plugin instance.
- init();
- // Expose methods of Plugin we wish to be public.
- return {
- option: option,
- destroy: destroy,
- fooPublic: fooPublic
- };
- }
- /**
- * Plugin definition.
- */
- $.fn[pluginName] = function(options) {
- // If the first parameter is a string, treat this as a call to
- // a public method.
- if (typeof arguments[0] === 'string') {
- var methodName = arguments[0];
- var args = Array.prototype.slice.call(arguments, 1);
- var returnVal;
- this.each(function() {
- // Check that the element has a plugin instance, and that
- // the requested public method exists.
- if ($.data(this, 'plugin_' + pluginName) && typeof $.data(this, 'plugin_' + pluginName)[methodName] === 'function') {
- // Call the method of the Plugin instance, and Pass it
- // the supplied arguments.
- returnVal = $.data(this, 'plugin_' + pluginName)[methodName].apply(this, args);
- } else {
- throw new Error('Method ' + methodName + ' does not exist on jQuery.' + pluginName);
- }
- });
- if (returnVal !== undefined){
- // If the method returned a value, return the value.
- return returnVal;
- } else {
- // Otherwise, returning 'this' preserves chainability.
- return this;
- }
- // If the first parameter is an object (options), or was omitted,
- // instantiate a new instance of the plugin.
- } else if (typeof options === "object" || !options) {
- return this.each(function() {
- // Only allow the plugin to be instantiated once.
- if (!$.data(this, 'plugin_' + pluginName)) {
- $.data(this, 'plugin_' + pluginName, new Plugin(this, options));
- }
- });
- }
- };
- // Default plugin options.
- $.fn[pluginName].defaults = {
- onInit: function() {},
- onDestroy: function() {},
- element: $('.tree > ul')
- };
- })(jQuery);
- $('.tree').treeView({
- element: $('.tree > ul')
- });
|