<!DOCTYPE html> <html lang="zh"> <head> <title>Marked Emoji Test</title> <meta charset="UTF-8"> <meta name="description" content="" /> <meta name="keywords" content="" /> <link rel="stylesheet" href="../examples/css/style.css" /> </head> <body> <script src="../examples/js/jquery.min.js"></script> <script src="../lib/marked.min.js"></script> <script type="text/javascript"> $(function() { var markedRenderer = new marked.Renderer(); var markdownToC = markdownToC || []; console.log("markedRenderer =>", markedRenderer); markedRenderer.listitem = function(text) { if (/^\s*\[[x\s]\]\s*/.test(text)) { console.log("is todo list =>", text); text = text.replace(/^\s*\[\s\]\s*/, '<input type="checkbox" class="task-list-item-checkbox"> ') .replace(/^\s*\[x\]\s*/, '<input type="checkbox" class="task-list-item-checkbox" checked disabled /> '); return '<li style="list-style: none">' + text + '</li>'; } else { return '<li>' + text + '</li>'; } }; marked.setOptions({ renderer : markedRenderer, gfm : true, tables : true, breaks : true, pedantic : false, smartLists : true, smartypants : true }); var todoListMarkdown = [ "- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported;", "- [x] list syntax required (any unordered or ordered list supported);", "- [x] this is a complete item;", "- [ ] this is an incomplete item;", "- [ ] this is an incomplete item;" ].join("\n"); var md = marked(todoListMarkdown); console.log(md); $("body").append(md); }); </script> </body> </html>