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> </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| /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| /g,
input__regex__remove_br = /<br\s*[\/]?>/gi;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// First, we will eliminate blank tags from OUR ACTUAL DOM OBJECT, like <p> <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' )...