REMOVE EMPTY ELEMENTS

by bizamajig

HTML

<div id="mydiv1" class="bizamajig-ui-element--preserve-empty"></div>
<div id="mydiv2" class="bizamajig-ui-element--preserve-empty"> a b c d e f g </div>
<div id="mydiv3" class="bizamajig-ui-element--preserve-empty"><div></div> <br> </div>
<div id="mydiv4" class="bizamajig-ui-element--preserve-empty"><p></p> &nbsp; &nbsp; &nbsp; &nbsp; </div>
<div id="mydiv5" class="bizamajig-ui-element--preserve-empty">


</div>
<div id="mydiv6" class="bizamajig-ui-element--preserve-empty">Where is pancakes house?</div>
<div id="mydiv7" class="bizamajig-ui-element--preserve-empty bizamajig-ui-element--preserve-empty--trigger"> n b s p</div>

CSS

div.hide,
p.hide {
  display: none;  
}
div,
p {
    margin: 5px;
    padding: 5px;
    display: block;  
    border: 1px solid red;
}
div:empty,
p:empty {
  padding: 20px;
  background: red;
}

JavaScript

/*
var input__regex__remove_spaces 													= /\s|&nbsp;/g;
alert( $('#mydiv2').html().replace( input__regex__remove_spaces, '' ) );
*/
$(document).on( 'bizamajig_element_preserve_empty', '.bizamajig-ui-element--preserve-empty', function() {

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		Validate Input
//
		var $element	 																	= $(this)										|| '',
    		$test_element																= $element.clone( false )		|| '',
			input__regex__remove_spaces 													= /\s|&nbsp;/g,
			input__regex__remove_br															= /<br\s*[\/]?>/gi;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		First, we will eliminate blank tags from OUR ACTUAL DOM OBJECT, like <p>      &nbsp; <br />  </p>
//
/*
		$test_element.find( 'p' ).each( function( i ) {
			var $this_element 																= $(this);
			if ( $this_element.html().replace( input__regex__remove_spaces, '' ).length 	=== 0 ){
console.log( 'REMOVING P' );
				$this_element.remove();
			}
		});
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		Validate Input
//
		var	input__string__text																= $test_element.text().trim()						|| '';
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		Next, OPERATE ONLY ON A STRING COPY OF OUR ACTUAL OBJECT, so we don't change the object.
//
//		We will escape the html, and trim using text
//
		if ( input__string__text															=== '' ) {
			$test_element.text( input__string__text );
//DEBUG PRESERVE EMPTY//console.log( 'DEBUG - PRESERVE EMPTY - TEXT - bizamajig_element_preserve_empty', $element.prop( 'id' )...