Monday, July 30, 2007

jQuery colspan and rowspan table using cell break

xxxhx1hx1hx1
xxxhxx1hxx2hxx3
hy1hyy1hy1a123
hy1hyy2hy11.12.13.1
hy1hyy3hy1456
hy2hyy3hy1789
hy2hyy3hy1101112
hy2hyy3hy1131415
hy3hyy3hy2123
hy3hyy3hy2123
hy2hyy3hy1123
hy2hyy3hy1123
hy3hyy3hy2123
hy3hyy3hy2123
Example:
 $("#table").rowspan(0);
 $("#table").rowspan(1);
 $("#table").rowspan(2);
 $('table tbody tr:visible').each(function(row) {
   $('#table1').colspan(row);
 })
jQuery.fn.rowspan = function(colIdx) {
 return this.each(function(){

  var that;
  $('tr', this).each(function(row) {
  $('th:eq('+colIdx+')', this).filter(':visible').each(function(col) {
      if ($(this).html() == $(that).html()) {
        rowspan = $(that).attr("rowSpan");
        if (rowspan == undefined) {
  
          $(that).attr("rowSpan",1);
          rowspan = $(that).attr("rowSpan");
        }
        rowspan = Number(rowspan)+1;
        $(that).attr("rowSpan",rowspan); // do your action for the colspan cell here
        $(this).hide(); // .remove(); // do your action for the old cell here
      } else {
        that = this;
      }
      that = (that == null) ? this : that; // set the that if not already set
  });
 });

 });
}
jQuery.fn.colspan = function(rowIdx) {
 return this.each(function(){

  var that;
  $('tr', this).filter(":eq("+rowIdx+")").each(function(row) {
  $(this).find('th').filter(':visible').each(function(col) {
      if ($(this).html() == $(that).html()) {
        colspan = $(that).attr("colSpan");
        if (colspan == undefined) {
          $(that).attr("colSpan",1);
          colspan = $(that).attr("colSpan");
        }
        colspan = Number(colspan)+1;
        $(that).attr("colSpan",colspan);
        $(this).hide(); // .remove();
      } else {
        that = this;
      }
      that = (that == null) ? this : that; // set the that if not already set
  });
 });

 });
}