Non-jQuery solution:
var divs, str; divs = document.getElementsByClassName( 'elem' ); [].slice.call( divs ).forEach(function ( div ) { str = ' ' + div.nextElementSibling.className + ' '; if ( str.indexOf( ' elem ' ) !== -1 ) { div.insertAdjacentHTML( 'afterend', ' <div class="new">X</div> ' ); } });
Live demo: http://jsfiddle.net/2MfgB/2/
"But Šime, this does not work in IE8 ..." :P
Update:
Alternative solution:
var divs = document.querySelectorAll( '.elem + .elem' ); [].slice.call( divs ).forEach(function ( div ) { div.insertAdjacentHTML( 'beforebegin', ' <div class="new">X</div> ' ); });
Live demo: http://jsfiddle.net/2MfgB/3/
source share