javascript - jQuery 换行没有容器的文本

标签 javascript jquery html

我有这个html

<div>This text is <strong>really</strong> awesome!</div>

我想包裹在里面<span>单击文本的一部分。所以如果你点击This text is部分你应该得到

<div><span>This text is </span><strong>really</strong> awesome!</div>

div 的任何原子部分相同

我正在尝试制作 $('div').click();事件,但我找不到如何只检测点击的部分,如果它没有被包裹在某些东西里面(<strong>really</strong> 部分没问题,但它之前和之后的部分不行)

最佳答案

您可能想查看 .contents() 方法。这将为您提供文本节点和包装节点,因此您可以包装它们。要调整 jQuery 文档中的示例:

$(".container")
    .contents()
    .filter(function() {
        // get only the text nodes
        return this.nodeType === 3;
    })
    .wrap( "<span></span>" );

听起来您想要在点击 之后包装内容,我认为这可能相当困难。如果可能,最好在用户点击 之前包装内容,然后将样式应用于他们点击的 span - 这样更直接。如果您使用上面的代码进行包装,则可以应用像这样的处理程序

$(".container").on('click', 'span', function() {
    $(this).addClass('clicked');
});

关于javascript - jQuery 换行没有容器的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727232/

相关文章:

javascript - window.innerHeight 在 iOS 11 中返回错误值

javascript - 安装和升级基于 Firefox Add-on-SDK 的扩展时强制重新启动

javascript - 忽略正则表达式中的回车

javascript - jQuery - 如何用标签包装输入标签

html - 位置固定在父 div 内

javascript - 当我使用 JQuery 切换时,脚本只最小化迭代器中的第一个值?

javascript - 如何在排序比较过程中忽略值中的 "-"和 "."字符?

javascript - 向上滑动并淡入淡出动画

javascript - 如何正确地将html表单数据编译为JSON对象

javascript - 在按钮按下/事件触发器上传递选定的对象模型