Как в атрибуте data (html) сохранять не только текст, но и теги html?
используйте разные виды кавычек " и '
Например: '<div class="main"></div>'
Выше человек сказал правильно, ваши кавычки конфликтуют, либо вы их не экранируете, либо вы экранируете фукнцией которая игнорирует кавычки, вот пример в котором прекрасно работают теги с классом в дата аттрибуте.
https://jsfiddle.net/7zkbeczx/