javascript - 获取 Contenteditable div 中图像的 alt 属性并替换图像

标签 javascript jquery html unicode contenteditable

我已经实现了小型网络聊天应用程序并在其中使用了笑脸
我制作了我的 div contenteditable="plaintext-only" 并将文本和笑脸图像添加到该 div。
每当用户点击笑脸时,带有 unicode 字符作为 alt 的图像 将绑定(bind)到 contenteditable div,他还可以在其中键入文本。 因此,最后单击发送按钮后,我需要获取 div 中的全部内容并用 alt 中的 unicode 替换图像 并将纯文本作为文本本身并发送消息。

我的表情绑定(bind)代码:

$("span.emo", container).click(function () {
   debugger;
   var toSlice = $(this).attr("data-emoji").split('-'); // get unicode Character
   var preview = emojione.toImage(toSlice[1]); // unicode to image conversion
   $('.mydiv').html($('.mydiv').html() + preview); // append image to the div
});

添加图片和文字后我的div的内容

   <div id="mydiv" contenteditable="plaintext-only" class="mydiv" style="width: 100%; height: 100px; border: 1px solid #ccc; margin-bottom: 100px">
     <img class="emojione" alt="👸" src="//cdn.jsdelivr.net/emojione/assets/png/1F478.png?v=1.2.4"><img class="emojione" alt="😺" src="//cdn.jsdelivr.net/emojione/assets/png/1F63A.png?v=1.2.4">
     <img class="emojione" alt="😸" src="//cdn.jsdelivr.net/emojione/assets/png/1F638.png?v=1.2.4"><img class="emojione" alt="😽" src="//cdn.jsdelivr.net/emojione/assets/png/1F63D.png?v=1.2.4">
     <img class="emojione" alt="😼" src="//cdn.jsdelivr.net/emojione/assets/png/1F63C.png?v=1.2.4"><img class="emojione" alt="🙀" src="//cdn.jsdelivr.net/emojione/assets/png/1F640.png?v=1.2.4">&nbsp;Hello Users<br>
   </div>

我的发送按钮代码

function Send() {
   debugger;
   //var allimgs = $('.mydiv').find('.emojione');
   var alldata = $('.mydiv').html(); // getting all html data but dont know how to loop through every element
   var childrendata = $(".mydiv").children(); // here I'm not getting the text, only getting the images as array
   var contenteditable = document.querySelector('[contenteditable]'),
                text = contenteditable.textContent; // here also I'm getting only text
}

我的问题是:

我需要获取数据并遍历每个元素并将所有图像替换为 unicode。我的最终数据应该是这样的:👸😸😼 你好用户

最佳答案

您可以遍历 children() 并使用 replaceWith() img 替换为其 alt 属性。

function Send() {
    $('.mydiv').children('.emojione').each(function () {
        $(this).replaceWith($(this).prop('alt'))
    });
}

Fiddle Demo

关于javascript - 获取 Contenteditable div 中图像的 alt 属性并替换图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30884610/

相关文章:

javascript - 如果已添加到主屏幕,则隐藏工具提示

javascript - Featherlight 在关闭时隐藏 div

jquery - 未考虑 HTML 中的样式

c# - 需要一个带有用户反馈的 ASP.NET MVC 长时间运行的进程

javascript - D3.js return color() 似乎是随机的?

php - 在 HTML 中包含 php 脚本

javascript - 当用户尝试退出浏览器时显示弹出窗口(GMail 样式)

javascript - 为什么 WebAssembly 这么慢?

javascript - JSON、AJAX 和 ASP.NET

html - 让 body 像这样 react 灵敏?