diff --git a/src/js/_enqueues/wp/emoji.js b/src/js/_enqueues/wp/emoji.js
index b2c8e1a15a..8ab5ea945e 100644
--- a/src/js/_enqueues/wp/emoji.js
+++ b/src/js/_enqueues/wp/emoji.js
@@ -121,6 +121,11 @@
 						while ( ii-- ) {
 							node = addedNodes[ ii ];
 
+							// Don't replace emoji inside elements that don't support it.
+							if ( ! node || node.closest( '.wp-exclude-emoji' ) || node.closest( '.CodeMirror' ) ) {
+								continue;
+							}
+
 							// Node type 3 is a TEXT_NODE.
 							if ( node.nodeType === 3 ) {
 								if ( ! node.parentNode ) {
@@ -145,14 +150,8 @@
 								node = node.parentNode;
 							}
 
-							/*
-							 * If the class name of a non-element node contains 'wp-exclude-emoji' ignore it.
-							 *
-							 * Node type 1 is an ELEMENT_NODE.
-							 */
-							if ( ! node || node.nodeType !== 1 ||
-								( node.className && typeof node.className === 'string' && node.className.indexOf( 'wp-exclude-emoji' ) !== -1 ) ) {
-
+							// Only make replacements inside Element nodes.
+							if ( node.nodeType !== 1 ) {
 								continue;
 							}
 
