暫無描述

jquery.grp_collapsible_group.js 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /**
  2. * GRAPPELLI GROUP COLLAPSIBLES
  3. * handles open/closing of all elements
  4. * with tabular- and stacked-inlines.
  5. */
  6. (function($) {
  7. $.fn.grp_collapsible_group = function(options){
  8. var defaults = {
  9. open_handler_slctr: ".grp-open-handler",
  10. close_handler_slctr: ".grp-close-handler",
  11. collapsible_container_slctr: ".grp-collapse",
  12. closed_css: "grp-closed",
  13. open_css: "grp-open",
  14. on_init: function() {},
  15. on_open: function() {},
  16. on_close: function() {}
  17. };
  18. options = $.extend(defaults, options);
  19. return this.each(function() {
  20. _initialize($(this), options);
  21. });
  22. };
  23. var _initialize = function(elem, options) {
  24. options.on_init(elem, options);
  25. _register_handlers(elem, options);
  26. };
  27. var _register_handlers = function(elem, options) {
  28. _register_open_handler(elem, options);
  29. _register_close_handler(elem, options);
  30. };
  31. var _register_open_handler = function(elem, options) {
  32. elem.find(options.open_handler_slctr).each(function() {
  33. $(this).on("click", function() {
  34. options.on_open(elem, options);
  35. elem.find(options.collapsible_container_slctr)
  36. .removeClass(options.closed_css)
  37. .addClass(options.open_css);
  38. elem.removeClass(options.closed_css)
  39. .addClass(options.open_css);
  40. });
  41. });
  42. };
  43. var _register_close_handler = function(elem, options) {
  44. elem.find(options.close_handler_slctr).each(function() {
  45. $(this).on("click", function() {
  46. options.on_close(elem, options);
  47. elem.find(options.collapsible_container_slctr)
  48. .removeClass(options.open_css)
  49. .addClass(options.closed_css);
  50. });
  51. });
  52. };
  53. })(grp.jQuery);