javascript - Rangy:如何使用动态 elementProperties 创建CssClassApplier

标签 javascript jquery rangy

我的代码:

var cssApplier;
        window.onload = function () {
            rangy.init();
            cssApplier = rangy.createCssClassApplier("highlight", {
                ignoreWhiteSpace: true,
                elementTagName: "span",
                elementProperties: {
                    id: new Date()
                }
            })
        };    

但是当我打电话

cssApplier.applyToSelection();

它总是渲染具有相同 id 属性的跨度,我如何动态设置 id 属性?

最佳答案

new Date() 仅在您调用 rangy.createCssClassApplier() 时计算一次。为每个创建的元素生成新的 id 的唯一方法是,Rangy 是否提供了在每次创建新元素时指定回调的方法,但目前还没有。然而,无论如何,这是我一直在考虑添加的内容。我已向 Rangy 问题跟踪器添加了一个问题:

https://github.com/timdown/rangy/issues/143

更新

您现在可以在 Rangey 1.3 中通过在选项对象中传递 onElementCreate 来执行此操作:

var id = 0;
var applier = rangy.createApplier("someClass", {
    onElementCreate: function(el) {
        el.id = "rangySpan_" + (id++);
    }
});

关于javascript - Rangy:如何使用动态 elementProperties 创建CssClassApplier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027538/

相关文章:

javascript - JS/jQuery 用于赋值

javascript - 使用 jQuery,我如何将文本 ajax 加载到多个 .classes 而不是 #id 中?

javascript - 使用 JavaScript 编辑自定义滚动条?

javascript - jsx 无法编译意外的 token

javascript - 在 javascript 的更新序列中使用 mathjax

javascript - contenteditable div : IE8 not happy with backspace remove of HTML element

javascript - cssClassApplier 仅适用于指定 div 中的选定文本

javascript - 使用 rangey 删除选择

javascript - Bug/错误 jquery 计算

javascript - 为什么在 IE8 上的 JavaScript 中访问图像的尺寸如此昂贵?