(function($){ $.fn.jExpand = function(){ var element = this; $(element).find("tr.sublevel").hide(); //$(element).find("tr.mainlevel").on("click", ".jexpand_trigger", function() { $(element).on("click", ".jexpand_trigger", function() { //alert('click'); $(this).html('+'); //console.log($(this)); sublevelrow = $(this).closest("tr"); //collapse if (sublevelrow.hasClass('expanded')) { sublevelrow.removeClass("expanded"); row = sublevelrow.next("tr.sublevel"); while( row.length>0 ){ //console.log(row); row = row.hide(0).next("tr.sublevel"); //nextrow.next("tr.sublevel").hide('fast'); } } //expand else { sublevelrow.addClass("expanded"); $(this).html('-'); row = sublevelrow.next("tr.sublevel"); while( row.length>0 ){ //console.log(row); row = row.show(0).next("tr.sublevel"); //nextrow.next("tr.sublevel").hide('fast'); } } }); $(element).on("click", ".jexpandAll_trigger", function() { //alert('click'); if ($(this).hasClass('expanded')) { $(this).removeClass("expanded").html('+'); //console.log(element); element.find(".jexpand_trigger").removeClass("expanded").html('+'); element.find("tr.mainlevel").removeClass("expanded"); element.find("tr.sublevel").removeClass("expanded").hide(); } else{ $(this).addClass("expanded").html('-'); //console.log(element); //expend now element.find(".jexpand_trigger").addClass("expanded").html('-'); element.find("tr.mainlevel").addClass("expanded"); element.find("tr.sublevel").addClass("expanded").show(); } }); } })(jQuery);